一次只有一个用户登录

时间:2013-05-20 06:04:11

标签: codeigniter session browser login session-timeout

我有一项要求,即如果用户从一个浏览器登录,则无法从其他任何地方登录。

我做的是当用户登录时我在登录时在日志表中输入了她的状态,当她退出时我更新了该状态。

问题来了:如果她没有退出并关闭浏览器怎么办?

任何帮助或改进都将提前感谢:-)我使用codeigniter作为后端工具。

2 个答案:

答案 0 :(得分:1)

在服务器端执行此操作是最好的选择。您可以在应用程序上下文中保留已登录的用户。

嗯,有点暗示。使用Servlet过滤器,比如 AuthFilter ,并进行验证,可能 isAlreadyLoggedIn(),旁边还有其他验证,如用户名/密码等。现在有了这个检查到位,您要么 - 这取决于您想要对尝试登录的用户做什么,显示“用户已登录”的消息,

答案 1 :(得分:0)

正如其他人所说,在服务器/数据库端使用超时是最好的选择。

您想办法检测用户是否关闭了浏览器 - 有javascript onunload事件,如果用户关闭了浏览器窗口,则会在大多数情况下触发。但是,它不会因紧急停机或javascript被关闭而触发,因此不太可靠。

还有其他原因以及为什么在服务器端实施超时是推荐的方法。例如,用户可能只是从公共计算机登录而忘记注销。在这种情况下,您确实希望在某个时刻超时,即使浏览器窗口仍处于打开状态。

此外,通过某种超时可以减少会话固定攻击的变化。