我正在使用表单例份验证构建一个 ASP.NET MVC3 应用程序,我想在该用户登录时注销该用户的所有现有 session 。我试图阻止不同工作站上的多人登录并在同一个帐户。
有处理这个的标准方法吗?注销现有 session 很容易,但我还没有找到一种方法来检查同一帐户的其他 session 并将它们注销。
我对如何破解它有一些想法,但我很好奇是否有使用 IIS 或 FormsAuthentication API 的既定方法。
最佳答案
由于网络的无状态性,在他们发出下一个请求之前,您不能“注销” session (例如, session 可能保存在 cookie 中,不能在客户端的上下文之外写入请求-响应交互)。
仍然有一个解决方案,它假设您正在使用 session 状态,并且最好为所有需要“身份验证”的 Controller 提供一个通用的基本 Controller 。
成功登录后,生成一个 token (可能是一个 guid)并将其与 session 一起存储。还将其写入由用户 ID 键入的应用程序范围的存储(例如数据库或应用程序上下文)。
在基本 Controller 中(否则您必须创建一个操作过滤器)检查 session 中的 token 与在应用程序范围存储中为用户 ID 注册的 token 。如果它们不匹配,请使用标准 SignOut()
注销用户称呼。
关于asp.net-mvc-3 - 使用表单例份验证在 ASP.NET MVC3 中注销用户的其他 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6047914/