java - 如何检测用户是否从其他浏览器登录网站?

标签 java session authentication

场景:

用户使用 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/

相关文章:

JAVA - 遍历音频文件文件夹,将另一个音频文件连接到每个音频文件

java - CSVReader - 使用“for escape char 时的错误

jsp - 在两个 tomcat 服务器上的两个应用程序之间保持 JSP session 处于事件状态

php - 与所有主要提供商实现单点登录的最佳方式?

mercurial - 如何让 hg 在 cygwin/windows 上提示输入我的 HTTP 身份验证用户名/密码?

java - 尝试使用一个 JSONArray 解析 JSONObject 时出现空 JSON 响应

java - 除打印提示和扫描仪之外的用户输入

c# - 从 .NET 应用程序登录 Windows

session - ServiceStack:在自托管应用程序中访问 HttpRequest

php: session 在服务器上实时运行时不起作用