奇怪的行为春天安全会话并发

时间:2011-01-03 06:38:05

标签: spring-security login-control

我发现Spring安全性,会话并发性很奇怪。

<sec:session-management>
        <sec:concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
</sec:session-management>

代码意味着,只有一个用户可以及时登录。

  1. 我成功登录,而不是点击退出按钮。注销成功(我不再获取用户名)。但是当我尝试重新登录时,我只是获得超出最大会话数的异常。是春季安全会议没有被删除?
  2. 我完成了登录。我没有注销,我尝试再次登录。我还是可以登录但是当我第二次重新登录时,我得到超出最大会话数的异常。我认为第一次尝试重新登录时应该拒绝登录。
  3. 感谢您的回复 最好的问候

3 个答案:

答案 0 :(得分:9)

确保您不会忘记根据会话管理的要求在web.xml中配置侦听器:

<listener>
    <listener-class>
        org.springframework.security.web.session.HttpSessionEventPublisher
    </listener-class>
</listener>

答案 1 :(得分:1)

我认为没有告诉Spring安全性在注销时使当前会话无效。这可以通过<logout>

记录的{{1}}元素完成

答案 2 :(得分:0)

我认为Raghuram是对的。

您尝试以下操作:

<logout invalidate-session="true" logout-url="/logout.htm"
logout-success-url="/login.jsp?loggedout=true" />

这里我在注销时将会话无效并将用户重定向到登录页面。 希望这是有帮助的。如果情况并非如此,请告诉我。