0

我的应用程序使用 spring3 mvc,如果用户打开两个选项卡并尝试使用不同的 userId 同时登录,我想将用户重定向到同一页面。

与 gmail 功能一样,如果两个用户从两个不同的选项卡登录,第一个用户将注销并看到会话超时消息。

4

2 回答 2

2

同一个浏览器的几个标签页使用同一个会话,所以如果你只是禁止已经登录的用户访问登录页面,这种情况永远不会发生。

这样做的唯一可能性是浏览器不支持 cookie,并且容器回退到 URL 重写以维护会话。在这种情况下,用户可以在同一个浏览器中同时拥有两个会话。但在这种情况下,您可以简单地强制为您的 web 应用程序使用 cookie。

于 2012-07-11T11:12:38.770 回答
0

试试下面的附加代码。

在使用某个键(例如“Y”)单击登录时,在本地存储中设置一个键。将下面提到的放在通用文件中,该文件将在整个应用程序中可用。更改本地存储的值时将触发以下事件。当值为 Y 时。调用注销功能。登录后清除本地存储。

While Clicking login - > CLEAR_USER_SESSION - > Y - This will Logout other Session's of the Same Application in the Same Browser as per the Below Code.

After Login - Change the Value to N or Empty - CLEAR_USER_SESSION  - > 'Y' or ''

window.addEventListener('storage', function(event) {
      if (event.key == 'CLEAR_USER_SESSION') {
        var winUrl = window.location.href;
        var terminateSession =event.newValue;
        var homepage = "N";
        if(document.getElementById("empTrId")){
            homepage = "Y";
        }

        if(terminateSession && terminateSession.trim() == "Y" && !winUrl.includes("loginAction.do?method=logout") 
                && !winUrl.includes("login.jsp") && homepage == "N"){
            logout();
        }
      }
    });
于 2020-07-30T07:26:43.563 回答