为保证用户的session安全,Spring Security可以配置以使用户同时单次在线。
也就是说,一个登陆用户只允许出现在一个session中。
第一步,在web.xml中配置session监听器监听session的声明周期。
<listener>
<listener-class>
org.springframework.security.web.session.HttpSessionEventPublisher
</listener-class>
</listener>
第二步:在spring security配置文件中配置session管理器:
<http>
...
<session-management>
<concurrency-control max-sessions="1" />
</session-management>
</http>
这样就会阻止一个用户登陆多次了,第二次登陆会导致第一次登陆无效,也就是会覆盖第一次登陆。
第三步:如果是想直接阻止第二次登陆,假如第一次登陆会话未过时的情况下,这样配置:
<http>
...
<session-management>
<concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
</session-management>
</http>