2010-01-04 138 views
4

我的j2ee应用程序使用spring安全问题。我将并发会话控制中的最大会话设置为1.现在,当我尝试登录第二次会阻止我时,它工作正常。但是,当我注销其他人并尝试再次登录时,我仍然收到相同的消息。Spring Security Max登录会话

您的登录尝试失败,请重试。 原因:1此主体最大会话我的HTTP安全突破

我有这个

<security:logout logout-url="/logout.do" 
    invalidate-session="true" logout-success-url="/logoutSuccess.do" /> 
<security:concurrent-session-control 
    max-sessions="1" exception-if-maximum-exceeded="true" expired-url="/loginform.do" /> 

回答

6

它已经相当一段时间,因为你张贴了这个,但如果其他人是否有这个问题,我相信,如果你不加org.springframework.security.web.session.HttpSessionEventPublisher如在web.xml监听器会发生此行为。

here

添加监听器web.xml中引起每一个HttpSession开始或结束时间发布到Spring的ApplicationContext一个ApplicationEvent。这很关键,因为它允许在会话结束时通知SessionRegistryImpl。如果没有它,即使用户退出其他会话或超时,用户将永远无法再次重新登录。
0

请检查错误页面不被缓存(按F5),并期待在日志中是否注销工作正常。

+0

我按了F5,消息仍然存在。这是什么意思 – cedric 2010-01-05 08:09:08

0
  1. 确保您的Spring Security Filters在您的Struts过滤器之前运行。
  2. 在Spring Security的LogoutFilter.doFilterHttp方法中设置一个断点。确保部件正常运行。