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

时间:2014-02-24 17:42:12

标签: c# asp.net sql-server authentication login

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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