asp.net-mvc-3 - 使用表单例份验证在 ASP.NET MVC3 中注销用户的其他 session

标签 asp.net-mvc-3 forms-authentication session-management

我正在使用表单例份验证构建一个 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/

相关文章:

multithreading - Spring + Hibernate 跨多个线程的 session 管理

asp.net-mvc - 关于asp.net mvc 3中Razor引擎的问题

asp.net-mvc-3 - 使用 EF 4.3 设计带有模块的 Web 平台

c# - 表单授权 : have different credentials for a subdirectory?

asp.net-mvc - ReturnUrl 指向 ActionResult

spring - 如何使用 Spring Security 通知用户另一个 session ?

asp.net-mvc-3 - 参数值 '33.42922222' 超出范围

javascript - 将按钮 ID 从 View 传递给 MVC Controller

c# - 如何处理 ASP.NET 中的表单例份验证超时异常?

node.js - Node.js/React 的用户管理