2012-08-16 157 views
0

在我正在处理它的项目中,我们决定防止多登录 为此,我在任何用户登录时在sql表中插入记录到网站,注销时删除它的记录(我使用session_end方法来做到这一点)防止多登录导致错误,并防止再次登录

这是一个问题:我设置会话超时10分钟,所以通过使用这种策略,当用户关闭浏览器为了再次登录,他必须等待1到10分钟(因为sql table中有一个记录会在最多10分钟内被session_end方法删除并阻止用户再次登录)。

是否有任何机构在那里帮助我在这个问题?每一个想法可能是有用的

对不起我的语法错误,我的英语新。欲了解更多详情评论我请

问候, 阿里Foroughi

+1

我认为你可以用一种方法做到这一点。无论何时用户关闭浏览器窗口,您都可以弹出消息并询问用户,通过关闭此窗口,您将从站点注销。看到这个帖子http://forums.asp.net/p/1205886/2121753.aspx似乎有点困难 – 2012-08-16 13:23:34

+0

这听起来不像一个非常可靠的解决方案。如果(例如)停电导致服务器故障,该怎么办?会话结束事件将不会运行,导致用户被锁定。 – user1429080 2012-08-16 13:37:16

回答

0

如果他靠近我不会用会话超时,以防止多个登录了你的状态,用户必须等待10分钟,登录的原因再次他的浏览器意外,浏览器崩溃或者像评论一样,服务器和连接记录的问题留在数据库中。还有一些其他人可能会在不知情的情况下将会话时间设置更改为1分钟或1小时。

我参加了一年前的系统,增加了每个用户只有连接的需求。我们设计的系统认为最后一次登录是有效的。我们还决定不使用会话超时来检查连接是否仍然有效。用户每次在网站上执行操作时,我们都会检查上次他是否在数据库中使用值存储进行操作,并将其与当前时间进行比较。如果差值低于最大不活动值(如10分钟),则系统将该值更新为当前时间并允许继续或重定向到超时页面。 有了这个解决方案,它阻止了多次登录,并防止了许多问题的发生,用户不必等待重新连接到网站。