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

时间:2013-06-01 07:57:01

标签: java javascript session spring-mvc

我在Spring MVC中构建了一个基于ajax的站点。在标题上,它显示登录的用户和浏览其他页面的菜单。点击菜单页面通过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.

1 个答案:

答案 0 :(得分:0)

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

<强>解释

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

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

<强>解决方案

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