我们有一个用户可以登录的网络应用程序。
现在我们想要的是同一个用户不应该能够使用不同的浏览器登录。
基本上目前使用两种不同浏览器(IE和FF)的用户可以同时登录同一个账户。当您点击登录按钮时,是否可以使该帐户的所有其他登录无效。
最好的方法是什么?
PS:我们在 Web 应用程序中使用了 Struts、Spring 和 Hibernate。
谢谢 !
我们有一个用户可以登录的网络应用程序。
现在我们想要的是同一个用户不应该能够使用不同的浏览器登录。
基本上目前使用两种不同浏览器(IE和FF)的用户可以同时登录同一个账户。当您点击登录按钮时,是否可以使该帐户的所有其他登录无效。
最好的方法是什么?
PS:我们在 Web 应用程序中使用了 Struts、Spring 和 Hibernate。
谢谢 !
在服务器端执行此操作是您最好的选择。您可以在应用程序上下文中保留大量登录用户。
嗯,有点提示。使用 Servlet 过滤器,比如说AuthFilter,进行验证,可能是isAlreadyLoggedIn(),在其他验证(如用户名/密码等)旁边。现在,在进行此检查后,你要么 - 这取决于你想用尝试登录的用户,显示“用户已登录”的消息,或者您可以让用户登录并使之前的会话无效。正如这里所讨论的。
您可以将登录的用户信息存储在数据库中,也可以从应用程序上下文中获取。如果用户已经登录,则不允许让他进行另一个会话。
Google使用一些IP 地址机制来注销登录另一台计算机的用户,而不是在同一浏览器或选项卡中注销。
也许我们可以使用geoip 数据库 Geolitecity 来保存用户的 ip + Balusc 存储会话的答案,使用用户作为密钥和解决方案的 ip 地址。
isLoggedIn在数据库中有一个列。设置为Y,如果它已登录,如果同一用户从另一台计算机或浏览器登录,则使会话无效。如果会话过期,请注意将其设置为N 。
*最好阅读Balusc的答案*
防止多重登录使用相同的用户名和密码 使用 HttpSessionBindingListener.