确保只有一个用户使用ASP.Net Membership Provider登录

时间:2008-11-19 21:25:47

标签: asp.net membership-provider

您如何确保每个帐户一次只能登录一个用户?

假设cookie是持久性的。

3 个答案:

答案 0 :(得分:2)

通常,最好的方法是在检查上次登录的提供程序上实现自定义,以及向代码添加方法以跟踪用户操作。

关键是你必须知道用户在什么时候做了什么或退出。从那里,您可以确定该帐户是否已准备就绪。如果您在代码中设置了这些元素的跟踪,则可以修改成员资格提供程序以进行检查以确保该帐户可以登录。

答案 1 :(得分:1)

从概念上讲,您必须决定如何回应。如果您有用户A登录,然后用户B尝试登录(使用相同的凭据),您:

  1. 踢用户A
    1. 不允许从用户B登录
    2. (2)是有问题的,因为您需要可靠地知道用户A已经注销以确定是否登录用户B.用户A可能只是在您网站上查看页面一段时间,因此通过时间进行可能不会做最好的。也许某种AJAX看门狗每30秒对你的网站进行一次ping操作。

      (1)也需要一些工作。当用户登录时,您可能希望存储其cookie值(可能在数据库中)并将其添加到此用户的列表已发布cookie中。这样,只接受最后发布的cookie(上次登录)。如果你看到一个早期的cookie,那么你会把那个人记录下来。

答案 2 :(得分:1)

我创建一个包含用户id的表。每次用户登录时,系统都会创建一个唯一的ID,该ID根据用户的ID以及会话变量存储在表中。

每个回发或页面处理,存储在会话变量中的密钥将根据存储在数据库中的该用户的最后一个密钥进行检查。 如果第二个用户使用相同的帐户登录,系统将创建一个新的唯一ID,以便当第一个用户回发或更改页面时,存储在其会话变量中的密钥将与表中的密钥不同,表示该帐户已在其他位置开通。

我安排了一个夜间进程来删除表中的旧ID