我正在使用Spring MVC 2.5.6开发我的Web应用程序,我需要一些帮助来处理多个用户会话。我的应用程序的标题显示已登录的用户。
在我的电脑中,我打开两个浏览器(无标签):
然后,我切换到第一个浏览器,向控制器提交操作,当再次显示应用程序时,在标题 user2 中出现,这是错误的,因为我使用登录USER1
所以,我的问题是:
SecurityContextHolder.getContext().getAuthentication().getName()
可能不是让许多用户登录用户的正确方法,因为它是单身人士(不是吗?)。我怎么能这样做?request.getSession().setAttribute(...)
和request.getSession.getAttribute(...)
进行管理)将被 user2覆盖数据。一般而言,我的问题是处理多个用户/会话。
非常感谢任何帮助。提前致谢。 最好的问候
答案 0 :(得分:2)
在我的电脑中,我打开两个浏览器(无标签):
- 在第一个中,我使用user1登录我的应用程序并进入。在标题中,出现user1。
- 在第二个中,我使用user2登录并继续。在标题中,出现了user2。
然后,我切换到第一个浏览器,向控制器提交操作,当再次显示应用程序时,出现标题user2,这是错误的,因为我使用user1登录。
如果会话正常实现,如果客户端在同一台计算机上运行同一浏览器的两个窗口或选项卡,则这是正常行为,因为它们共享会话。
如果您在IE和Firefox中打开应用程序,他们将不会共享会话,并且一切正常。
我不相信有办法让浏览器停止在Windows之间共享会话,所以如果你需要它们独立行动,你需要基本上创建自己的会话机制,可能是使用隐藏字段或某些这种黑客攻击而不是正常机制使用的cookie或URL重写。
接受这种情况会更好。让用户知道他们何时打开第二个窗口并连接到您已经登录的应用程序,并且不允许再次登录。