限制并发登录- ASP.净的身份

本文关键字:身份 ASP 并发 登录 | 更新日期: 2023-09-27 18:04:50

我试图只允许一个用户帐户登录,只有一次在同一时间。

。用户通过电脑上的浏览器登录,现在他们不能在手机上同时登录,因为他们已经登录了。

我可以为我的用户实体添加一个bool属性,我可以在用户登录和注销时更新。

然而,我在身份验证cookie上使用SlidingExpiration,因此,当cookie过期时,它不会更新我的用户属性,说他们现在已经注销。

ExpireTimeSpan = <time period>,
SlidingExpiration = true,

是否有更好的方法来限制并发登录?

谢谢

限制并发登录- ASP.净的身份

您可以在登录时生成令牌并将其存储在数据库中吗?
然后,每次检查令牌是否与用户提供的令牌匹配。
如果他在另一台设备上登录,令牌将被覆盖,并且与第一个令牌不匹配,因此第一个会话将无效。

编辑:
正如你在评论中所问的,它不会阻止用户同时在另一台设备上执行第二次登录,它只会使以前的会话无效。
避免第二次登录需要更多的工作,并且不像上面所示的方法那样安全。
想象一下,用户关闭了浏览器,没有执行登出操作……它将阻止会话。
您想要的近似结果是将time参数添加到登录中(也将其添加到数据库中,并在每个用户的操作上更新字段)。
然后显示"你不能登录两次"的消息,如果令牌不匹配,时间跨度不够远(即5分钟)。但是在我的例子中,如果令牌已经更改,则需要显示"您的会话过期"。

"这个想法很简单,每次用户登录时,你必须生成随机令牌,然后你应该将该令牌保存在数据库和会话中,或者如果你使用微软表单身份验证,你可以将其保存在票证中,然后每次用户请求一个页面时,你会检查会话令牌是否与数据库令牌相同,如果不是踢他出去!"

http://engthunder.wordpress.com/2011/10/19/preventing-multiple-user-from-logging-in-using-the-same-username-single-user-login-at-a-time/