.net有关会员管理文章的问题

sou123 2010-01-06 05:31:50
首先告诉下大家我是.net的超级菜鸟,希望大家在解决问题时能把详细的代码写出来,谢谢。

我做了个简单的文章系统,会员可以注册,发布文章。但是后台修改的时候,我如何让甲会员不能修改乙会员的信息?

我现在是这样的做的

文章id 编辑

22 edit.aspx?id=22
33 edit.aspx?id=33


我发现这样的问题是,我在登陆任意一个用户以后,我在浏览器输入 edit.aspx?id=xxx ,只要我知道了这个文章的id,就可以修改别人的文章。

如何解决这个问题?请大侠给予详解,详细代码,谢谢。

...全文
79 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yan267 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 camperer 的回复:]
用membership不现实啊#5楼,那玩意其实不简单,对不熟悉的人来说就是鸡肋。。
你数据库中保存帖子的表里,应该有个字段保存文章发表人的id吧,跟用session或者cookie保存的登录人的id比较,如果不同就不允许编辑了
[/Quote]

不错,先判断这篇文章属于谁。。。。
camperer 2010-01-07
  • 打赏
  • 举报
回复
用membership不现实啊#5楼,那玩意其实不简单,对不熟悉的人来说就是鸡肋。。
你数据库中保存帖子的表里,应该有个字段保存文章发表人的id吧,跟用session或者cookie保存的登录人的id比较,如果不同就不允许编辑了
sou123 2010-01-07
  • 打赏
  • 举报
回复
不是太明白楼上的。。。
HooverHuang 2010-01-07
  • 打赏
  • 举报
回复
上面一个是加密,一个是解密。。。。

string EncryptionKey = "!5623a#de";可以修改,只要加密个解密方法中的这个串是一样的就可以了。。。
HooverHuang 2010-01-07
  • 打赏
  • 举报
回复
页面加载的时候判断登录时创建的Session是否为空。。。

还有就是把那个Url加密一下,我一般是那么做的,给你个加密加密的方法


public string Encrypt(string Input)
{
byte[] key = { };
byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
string EncryptionKey = "!5623a#de";
try
{
key = System.Text.Encoding.UTF8.GetBytes(EncryptionKey.Substring(0, 8));
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
Byte[] inputByteArray = Encoding.UTF8.GetBytes(Input);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(key, IV), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
catch (Exception ex)
{
return "";
}
}





public string Decrypt(string Input)
{
byte[] key = { };
byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
string EncryptionKey = "!5623a#de";


if (!string.IsNullOrEmpty(Input))
{
Input = Input.Replace(" ", "+");
Byte[] inputByteArray = new Byte[Input.Length];
try
{
key = System.Text.Encoding.UTF8.GetBytes(EncryptionKey.Substring(0, 8));
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
inputByteArray = Convert.FromBase64String(Input);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(key, IV), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();

Encoding encoding = Encoding.UTF8;
return encoding.GetString(ms.ToArray());

}
catch (Exception ex)
{
return "";
}
}
else
{
return "";
}
}

sou123 2010-01-07
  • 打赏
  • 举报
回复
还有更好的办法么?
MM_MM_ 2010-01-06
  • 打赏
  • 举报
回复
net的权限控制不是只要改配置文件就行了吗....

挺方便的
  • 打赏
  • 举报
回复
用户名称判断修改权限
vip__888 2010-01-06
  • 打赏
  • 举报
回复
罗纳尔迪尼奥 2010-01-06
  • 打赏
  • 举报
回复
edit.aspx?id=33&user=a 再传递一个参数
这样你在修改时比对一下用户,是自己发布的就让他修改,否则不让呗

Lovely_baby 2010-01-06
  • 打赏
  • 举报
回复
可以用session记住用户信息
page_load中加验证 看看是否为该用户的数据
====
我的方法比较麻烦~~

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧