场景:
用户使用 Firefox 登录 website.com。登录凭据有效,用户被定向到成员(member)页面。
用户尝试使用 Chrome 登录 website.com。登录凭据有效,因为用户已经使用 Firefox 登录,系统会抛出错误,要求用户关闭其他 session 才能通过 chrome 登录。
我怎样才能检测到这一点?现在,如果用户仅使用一种浏览器,我可以检测到它,但当用户使用两种不同的浏览器在不同时间登录时,似乎会中断。
编辑*我想说这不仅仅是使用不同的浏览器,网站不应该允许多人使用相同的登录凭据登录。
最佳答案
我假设您的应用程序是基于 j2EE/servlet 的。如果是这样的话,两个浏览器是相互独立的,因此它们有自己的sessionId,可以独立运行,只要你的应用程序不干扰。
为了防止出现这种情况,一种实现方法是在 servlet 中保留 SessionID 和 UserID 的 HashMap 。您可以在每次成功登录时填充此内容,例如通过过滤器或阀门。当您填充 HashMap 时,请检查是否有任何其他 sessionID 已在使用此 userID。如果使用,请检查对应的sessionID是否仍然处于 Activity 状态。如果未激活,则允许登录,并删除过时的 sessionID。如果它处于 Activity 状态,则终止另一个 session 并允许登录。
关于java - 如何检测用户是否从其他浏览器登录网站?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11584691/