Spring MVC -在所有选项卡中重定向到登录页面

Spring MVC - Redirect to login page in all tabs

本文关键字:重定向 登录 选项 MVC Spring      更新时间:2023-09-26

我有一个基于ajax的网站建立在Spring MVC。在标题上,它显示了登录的用户和浏览到其他页面的菜单。点击菜单页面通过ajax调用改变,菜单/标题保持不变。这是我面临的一个问题,

1- Logged in as user1
2- Click Profile Page to see its profile (via ajax loads fine)
3- Open another tab, open the same site, logged out and log in as user2
4- Come back to First Tab, click Profile Page again
This time it shows profile of User2 but on header/menu its still showing User1

如何实现这个解决方案?或者有更好的解决方案吗?

-- As soon as a user is logged out, the web site should refresh to login page on all tabs where its opening on same browser.

不确定你是否理解为什么的行为是这样的,所以我快速解释一下。

通常每个浏览器实例有一个会话,而不是每个选项卡。因此,如果在每个实例中启动浏览器X两次并加载应用程序一次,就不会出现这个问题。

但是,在单个浏览器实例中,加载到选项卡1中的应用程序没有意识到您在选项卡2中注销并使用不同的用户登录。它为每个浏览器实例保留一个会话cookie。然后,如果你与tab 1中的应用程序交互,它会发现当你在tab 2中登录时创建的会话cookie并使用它。

<<p> 解决方案/strong>

一种解决方案是每次加载一个内容页时更新标题。为此,您需要在用户登录时将用户信息(id、名称等)存储在cookie中,并在加载内容页时从cookie中读取。或者您将用户信息与每个内容页一起发送,当然它必须隐藏在某个地方。