关于.NET身份授权验证及时更新的问题

jackylynn 2009-04-03 09:43:55
以下是登录后台代码,很简单,根据登录用户不同的权限ID赋予不同的权限COOKIE
// 登陆正确
if (user != null)
{
this.UserInfoCache = user;
// 经理
if (this.UserInfoCache.RoleId == 1)
{
FormsAuthentication.RedirectFromLoginPage("manager", false);
}
// 总公司经理
else if (this.UserInfoCache.RoleId.Equals(3))
{
FormsAuthentication.RedirectFromLoginPage("admin", false);
}
// 职员
else
{
FormsAuthentication.RedirectFromLoginPage("user", false);
}
}


以下是配置文件,也很简单
<location path="UserManage.aspx">
<system.web>
<authorization>
<allow users="admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>


现在的问题是,admin用户把自己的权限修改成manager,在session或cookie过期之前他依然可以访问admin才能访问的页面,请问各位如何能够做到及时更新权限?由于在这方面我是初学,希望有详细的代码,100分奖励,十分感谢。
...全文
88 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackylynn 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dd__dd 的回复:]
不能直接删除用户计算机中的 Cookie。但是,可以通过将 Cookie 的到期日期设置为过去的日期,让用户的浏览器来删除 Cookie。当用户下一次向设置该 Cookie 的域或路径内的页发出请求时,浏览器将确定该 Cookie 已到期并将其移除。

调用 Cookies集合的 Remove方法可从服务器端的集合中移除 Cookie,使 Cookie 不会被发送至客户端。但是,如果客户端已存在 Cookie,则

向 Cookie 分配已过去的到期日期

1. 确定 Co…
[/Quote]

请问我用的验证的COOKIE与你说的COOKIE是不是一回事?通过我上面的代码难道用request.cookies["admin"]获得?
dd__dd 2009-04-03
  • 打赏
  • 举报
回复
不能直接删除用户计算机中的 Cookie。但是,可以通过将 Cookie 的到期日期设置为过去的日期,让用户的浏览器来删除 Cookie。当用户下一次向设置该 Cookie 的域或路径内的页发出请求时,浏览器将确定该 Cookie 已到期并将其移除。

调用 Cookies集合的 Remove方法可从服务器端的集合中移除 Cookie,使 Cookie 不会被发送至客户端。但是,如果客户端已存在 Cookie,则

向 Cookie 分配已过去的到期日期

1. 确定 Cookie 是否存在,如果存在则创建同名的新 Cookie。
2. 将 Cookie 的到期日期设置为过去的某一时间。
3. 将 Cookie 添加到 Cookies 集合对象。

下面的代码示例演示如何为 Cookie 设置已过去的到期日期。

  if (Request.Cookies["UserSettings"] != null)
{
HttpCookie myCookie = new HttpCookie("UserSettings");
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);
}
jackylynn 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 namhyuk 的回复:]
没太明白。

是说在运行过程中admin用户动态的把自己权限改成manager的问题吗?

我记得好像有DeleteCookie()方法吧?你删掉放到客户端的admin对应的Authentication Cookie,然后再修改权限,再把新权限放到客户端不行吗?

应该有DeleteCookie()的,方法名记不清了。。。
[/Quote]

对,是用户自己动态改权限的。这个思路我也想过,可就是不知道如何写代码,以及代码应写在哪里,望指点。
moonshineidolon 2009-04-03
  • 打赏
  • 举报
回复
没有这么做过,权限是放数据库里的。
通过数据库读取,判定。
闽南卤面 2009-04-03
  • 打赏
  • 举报
回复
路过
namhyuk 2009-04-03
  • 打赏
  • 举报
回复
没太明白。

是说在运行过程中admin用户动态的把自己权限改成manager的问题吗?

我记得好像有DeleteCookie()方法吧?你删掉放到客户端的admin对应的Authentication Cookie,然后再修改权限,再把新权限放到客户端不行吗?

应该有DeleteCookie()的,方法名记不清了。。。
namhyuk 2009-04-03
  • 打赏
  • 举报
回复
没太明白。

是说在运行过程中admin用户动态的把自己权限改成manager的问题吗?

我记得好像有DeleteCookie()方法吧?你删掉放到客户端的admin对应的Authentication Cookie,然后再修改权限,再把新权限放到客户端不行吗?

应该有DeleteCookie()的,方法名记不清了。。。
llsen 2009-04-03
  • 打赏
  • 举报
回复
在更改权限的地方重新设置cookie

62,268

社区成员

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

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

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

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