如何防止用户从多个位置或同一台PC上的不同浏览器登录

我正在创建一个用户无法尝试多次登录的应用程序。 如果特定用户登录,我的数据库标志值将设置为1 ,这意味着没有其他具有相同用户名和密码的成员可以登录。

如果用户注销我的数据库标志值设置为0 。 这一切都运行良好但现在我有一个不同的问题,即当用户突然关闭浏览器而没有注销页面或会话超时然后自动数据库标志值应设置为0 。 现在我不知道该怎么做。 请给我任何解决方案。

在您的Global.asax文件中,您有Session_OnEnd()

 public void Session_OnEnd() { // Set flag to 0 } 

如果您的sessionState设置为INPROC (这是默认设置),这将没关系,如果您已将其手动调整为StateServerSQL Server则此事件将被忽略。

当浏览器关闭窗口时,您可以在JavaScript中使用onbeforeunload

 window.onbeforeunload = function(e) { // call an Ajax function to reset the state. }; 

只需在数据库中创建一个isloggedin列

例如:

 USERNAME | PASSWORD | isloggedin | logintimestamp user | pass | 0 | 3/9/2013 23:59:59 

并在用户登录时将其设置为1,并且在用户登录时使用ajax更新db中的当前时间…

如果这不能使定时器函数根据时间戳检查登录值http://dev.mysql.com/doc/refman/5.1/en/events.html

这是教程: http : //www.sitepoint.com/how-to-create-mysql-events/