【发布时间】:2011-08-12 06:36:34
【问题描述】:
我正在使用 Spring MVC 2.5.6 开发我的 Web 应用程序,我需要一些帮助来处理其中的多个用户会话。我的应用程序的标题显示登录的用户。
在我的电脑上,我打开了两个浏览器(没有标签):
- 在第一个中,我使用 user1 登录我的应用程序并进入。在标题中,user1 出现。
- 第二次,我使用 user2 登录并继续。在标题中,user2 出现。
然后,我切换到第一个浏览器,向控制器提交操作,当再次显示应用程序时,在标题 user2 出现,这是错误的,因为我使用 登录用户1.
所以,我的问题是:
-
SecurityContextHolder.getContext().getAuthentication().getName()可能不是获取具有许多用户的登录用户的正确方法,因为它是单例的(不是吗?)。我怎么能这样做? - 会话对象也会出现这种错误情况,因此 user1 存储在会话对象中的数据(由
request.getSession().setAttribute(...)和request.getSession.getAttribute(...)管理)被 user2 覆盖数据。 - 在这个 StackOverflow 问题Handling Session ID with Spring 中,建议管理会话 ID 以分离数据。我应该在我的应用程序内部手动管理每个带有会话 ID 的用户数据吗?如何获取会话 ID?
一般来说,我的问题在于处理多个用户/会话。
任何帮助将不胜感激。提前致谢。 最好的问候
【问题讨论】:
-
到底是什么问题?当您使用两个浏览器时,您有两个会话,不同的用户登录,这就是它的工作方式。
-
问题是我不知道会话是在同一个浏览器实例之间共享的。但这似乎是正常的行为。谢谢axtavt
标签: spring session spring-mvc concurrency spring-security