ASP.NET标识,在服务器中只允许一个经过身份验证的用户

时间:2015-03-13 18:33:09

标签: asp.net-identity identity asp.net-identity-2

我在我的MVC5应用程序中实现了ASP.net Identity 2.1.0身份验证。我正在寻找一种方法,每个用户名/密码组合一次只允许一个连接。例如,如果某人使用了用户名A和密码B,那么在他们断开连接之前,任何尝试使用密码A作为B进行连接的人都将被拒绝并显示一条消息"有一个活跃的用户使用该信息登录!"。 我已尝试使用CookieAuthenticationProvider.OnValidateIdentityCookieAuthenticationProvider.OnResponseSignIn,但我不知道如何检测活跃用户的会话。

我发现a post有类似的东西,但不是拒绝使用相同凭据的第一个连接,而是在密码更改时使连接无效。

1 个答案:

答案 0 :(得分:0)

我会通过每次用户登录并在用户会话和身份验证令牌中存储新GUID时生成新的GUID来解决问题。在每个请求或某个时间间隔内,您可以比较两者,如果它们不匹配,您可以将用户注销。

使用这种方法,当用户从第二个浏览器/设备登录时,您可以通过一条消息提示他们当前已在其他地方登录,并且如果会话继续,该会话将被注销。