繁体   English   中英

防止用户组中的同时并发和最大登录

[英]Prevent simultaneous concurrent & maximum logins in User group

是否可以在Asp.Net Web应用程序中仅允许每个用户进行一次并发登录?

我正在开发一个Web应用程序,我希望确保该网站每个用户一次只能登录一次。 如何检查当前用户是否已登录。

此外,我想限制每组定义的登录数量。 像最多10个IT部门人员可以一次登录,最多5个人力资源部门人员可以登录。

我使用简单的数据库来存储登录信息

因此,您需要跟踪这两个不同的事情并检查。

首先,当有人登录时,您将要使该用户名的任何先前会话无效。 这可以防止有人在一台计算机上登录然后登录另一台计算机,因为第一台计算机将无法再生成任何新的经过身份验证的请求。 在大多数情况下,这对于处理未积极尝试破坏此限制的用户来说已足够。

接下来会有点复杂。 您需要查找的是用户使用相同的经过身份验证的会话ID向您的服务器发出请求,但使用不同的IP,broswers等。您将要查找的是处理一个人登录的情况,然后查看其cookie中的会话信息,然后在另一台计算机上重新创建具有相同会话ID的相同cookie。

第二种方法确实存在问题。 大多数人没有完全静态的IP。 完全静态的IP实际上非常罕见。 也就是说,对于大多数用户来说,他们的IP不会经常轮换; 在积极使用网站时,他们不太可能看到它发生变化。 如果使用适当的网站,这些人不会有任何问题。 但是,有些人的互联网提供商会经常轮换他们的IP。 这些人可能也没有做任何不合适的事情。 如果你不处理人们的IP可能经常变化的事实,你最终可能会不断地从某些互联网提供商那里踢出所有用户。 您真正想要注意的是具有给定IP /会话的用户执行的操作,然后来自具有相同会话的不同IP的同一帐户的操作,然后来自第一IP的更多操作的情况当你在很短的时间内看到两个IP之间的这种翻转时,它强烈表明两台不同机器上的两个人正在访问该帐户。 您可以通过合并每个请求的其他方面来进一步改进此度量标准,例如浏览器信息(包含版本,最低版本组件)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM