我们有一个用户可以登录的Web应用程序。
现在我们想要的是同一个用户不应该使用不同的浏览器登录。
目前,使用两种不同浏览器(IE和FF)的用户基本上可以同时登录同一帐户。当您点击登录按钮时,是否可以使该帐户的所有其他登录失效。
这样做的最佳方法是什么?
PS:我们在Web应用程序中使用Struts,Spring和Hibernate。
谢谢!
答案 0 :(得分:2)
在服务器端执行此操作是最好的选择。您可以在应用程序上下文中保留已登录的用户。
嗯,有点暗示。使用Servlet过滤器,比如AuthFilter
,然后进行验证,可以是isAlreadyLoggedIn()
,除了用户名/密码等其他验证之外。现在,在完成此检查后,您可以 - 这取决于您想要对尝试登录的用户做什么,显示“用户已登录”的消息,或者您可以让用户登录并使之前的会话无效。正如here所述。
答案 1 :(得分:0)
您可以将登录的用户信息存储在数据库中,也可以从Application上下文中获取。如果用户已登录,则不允许再次进行会话。
答案 2 :(得分:0)
Google 使用一些 IP地址机制来注销登录到另一台计算机的用户,而不是使用相同的浏览器或标签注销。
我们可以使用 geoip database Geolitecity来保存 用户的ip + Balusc使用用户作为密钥和ip存储会话的答案解决方案的地址 。
在数据库中有一列isLoggedIn
。设置为 Y ,如果已记录,如果同一用户从另一台计算机或浏览器登录,则会话无效。如果会话过期,请注意将其设置为 N 。
*最佳阅读Balusc的回答*
prevent-multiple-login-using-the-same-user-name-and-password使用HttpSessionBindingListener
。