我的j2ee应用程序使用spring security存在问题。我将并发会话控制中的max-sessions设置为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" />
答案 0 :(得分:7)
自从您发布此内容已经有一段时间了,但如果其他人遇到此问题,我相信如果您不在您的web.xml中添加org.springframework.security.web.session.HttpSessionEventPublisher
作为侦听器,则会发生此行为。
请参阅here:
将侦听器添加到web.xml会导致每次HttpSession开始或终止时都将ApplicationEvent发布到Spring ApplicationContext。这很关键,因为它允许在会话结束时通知SessionRegistryImpl。没有它,用户一旦超出会话限额就永远无法再次登录,即使他们退出其他会话或超时也是如此。
答案 1 :(得分:0)
请检查错误页面是否未缓存(按F5)并查看日志以查看注销是否正常。
答案 2 :(得分:0)