我有一个要求,如果用户从一个浏览器登录,那么她无法从其他任何地方登录。
我所做的是当用户登录时,我在登录表中输入她的状态,当她注销时,我更新该状态。
问题来了:如果她没有退出并关闭浏览器怎么办?
任何帮助或改进都将提前表示赞赏:-) 我使用 codeigniter 作为后端工具。
我有一个要求,如果用户从一个浏览器登录,那么她无法从其他任何地方登录。
我所做的是当用户登录时,我在登录表中输入她的状态,当她注销时,我更新该状态。
问题来了:如果她没有退出并关闭浏览器怎么办?
任何帮助或改进都将提前表示赞赏:-) 我使用 codeigniter 作为后端工具。
在服务器端执行此操作是您最好的选择。您可以在应用程序上下文中保留大量登录用户。
嗯,有点提示。使用 Servlet 过滤器,比如AuthFilter并进行验证,可能是isAlreadyLoggedIn(),在其他验证(如用户名/密码等)旁边。现在,在进行此检查后,你要么 - 这取决于你想要什么与尝试登录的用户有关,显示“用户已登录”的消息,
正如其他人所说,在服务器/数据库端使用超时是最好的选择。
您要求一种方法来检测用户是否关闭了浏览器 - 如果用户关闭了浏览器窗口,大多数情况下会触发 javascript onunload 事件。但是,它不会在紧急关闭或 javascript 已关闭时触发,因此它不是很可靠。
还有其他原因以及为什么在服务器端实现超时是推荐的方法。例如,用户可能刚刚从公共计算机登录并忘记注销。在这种情况下,您确实希望在某个时候使会话超时,即使浏览器窗口仍处于打开状态。
此外,具有某种超时减少了会话固定攻击的变化。