在Spring Security中并发控制失败时,哪个用户将从会话中获取?

时间:2016-05-01 14:31:45

标签: java spring spring-mvc spring-security

说我们在Spring MVC Web应用程序中有这些代码:

弹簧security.xml文件

<sec:session-management invalid-session-url="/session_timeout">
    <sec:concurrency-control max-sessions="1" error-if-maximum-exceeded="false" expired-url="/session_conflict"/>
</sec:session-management>

并在控制器中

@RequestMapping(value="/session_timeout")
public String sessionTimeout(@AuthenticationPrincipal UserDetails userDetails) {
   // ---- (A)
} 

@RequestMapping(value="/session_conflict")
public String sessionConflict(@AuthenticationPrincipal UserDetails userDetails) {
   // ---- (B)
}

使用此设置,我的问题是:

  1. 当用户(用户A)登录,而另一个用户(用户B)尝试使用相同的用户ID登录时,将调用sessionConflict并且第一个用户(用户A)'会议将被销毁。

  2. 到位(A),我可以获取超时的用户信息吗?

  3. 到位(B),哪个用户的信息将进入userDetail?用户A或用户B?

  4. 我正在尝试获取破坏用户的信息,以便我可以将其标记为脱机。如果我不能问题2和3,还有其他方法吗?

  5. 非常感谢。

0 个答案:

没有答案