如果他再次在相同或不同的浏览器上登录,如何注销用户的上一个会话

我有一个查询,我希望如果用户已经登录到网页并再次从相同或不同的机器重新登录,那么他的上一个会话应该被杀死并自动登录到主页面。 我在客户端使用jquery,在后端使用servlet。 我使用tomcat 6作为web服务器和jdk1.6编译器。 我只是想像雅虎那样,如果用户从某台机器进入并且下次再次从其他机器或同一台机器登录时,他会从previos会话自动注销并重定向到主页面。 请告诉我该如何实现。

这是我用来检测不同机器登录的非常人为的方法

  1. 当用户登录时,为他生成一个哈希密钥,将其存储在他的会话中,并存储在数据库中。 数据库只为用户存储一个hashkey(它不是登录历史记录)

  2. 每当用户访问页面时,检查会话中的哈希键是否与数据库中的哈希键匹配

  3. 如果匹配,一切都很好。

  4. 如果不匹配,则不是来自同一台机器; 因为如果用户在其他地方登录,将生成一个新的hashkey并替换数据库中的一个。

4A。 告诉原始机器上的用户“你已经登录到其他地方”并取消设置那里的所有会话(即,将他注销)。 但这只是在下一页刷新 – 如果你使用AJAX可以避免

至于相同的登录 – 如果用户在登录时尝试登录该站点,只显示他已登录的消息? 如果他再次登录会刷新会话数据的意图是什么(我们是否在谈论同一用户在同一台​​机器上登录同一站点?)

当用户再次登录时,只需生成新的会话ID,之前的会话ID将无效。

如果您将会话ID附加到用户ID,那么当您创建新的会话ID时,它将替换当前的会话ID,当您检查有效的会话ID时,您将看到不再找到旧的会话ID,所以你的申请会告诉他们他们已经退出了。

如果要跟踪会话ID,那么只需在userid和valid标志之间有一个唯一的有效标志,这样每个用户一次只能有一个有效的会话。

如果您看到他们有第二个会话ID,那么您可以让他们知道由于登录到新会话而他们已从第一个会话中注销。