ASP.net表单身份验证 - 管理员杀死单个用户的会话

时间:2012-01-20 10:54:07

标签: asp.net forms-authentication

我们遇到了一个奇怪的问题。有没有办法以另一个用户(例如管理员)身份登录时以编程方式导致单个用户“注销”。

e.g。 stackoverflow上的管理员会决定我应该注销 - 单击一个按钮然后我将被迫再次登录我的下一个SO请求。

这适用于使用运行ASP.net的基于标准表单的身份验证的网站。

1 个答案:

答案 0 :(得分:1)

因为经过身份验证的会话取决于cookie,所以他们彼此不了解。

因此,您需要跟踪已登录的用户可能与他们的角色一起。并在每个请求的开头执行检查。

首先跟踪:

  1. 用户A - 角色'admin'登录。在db
  2. 中创建一行
  3. 用户A - 角色'经理'登录,现在您将步骤1中的行标记为已过期,并为用户A创建新行 - 角色'经理'
  4. 用户A - 角色'admin'尝试执行某些操作。在begin request方法中,您将验证此会话是否标记为到期。如果只是注销,请删除步骤1中的行并重定向到登录。
  5. 用户A点击退出,删除用户A - 角色'经理'行