我的应用程序使用spring3 mvc,如果用户打开两个标签,我想将用户重定向到同一页面。尝试使用不同的userId同时登录。
与gmail功能一样,如果两个用户从两个不同的选项卡登录,则第一个用户将获得注销&查看会话超时消息。
答案 0 :(得分:2)
同一浏览器的多个选项卡使用相同的会话,因此如果您只是禁止已登录用户访问登录页面,则不应发生这种情况。
唯一可能的做法是浏览器不支持cookie,并且容器会回退到URL重写以维护会话。在这种情况下,用户可以在同一浏览器中同时拥有两个会话。但在这种情况下,您可以简单地强制使用cookie作为您的webapp。
答案 1 :(得分: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();
}
}
});