特殊用户的maxSession配置防护

时间:2013-05-11 09:48:08

标签: java session java-ee spring-security

我是Spring安全新手,对Spring安全性的会话管理有疑问。 我已经像这样配置了我的应用程序,以防止在特定时刻多次使用用户名登录:

<bean id="sas" class="security.SessionAuthenticationStrategy">
    <constructor-arg ref="sessionRegistry"/>
    <property name="maximumSessions" value="1" />
    <property name="exceptionIfMaximumExceeded" value="true"/>
</bean>

我想知道是否可以在spring security中为特殊用户阻止此配置。

1 个答案:

答案 0 :(得分:3)

可以通过覆盖自定义子类中的ConcurrentSessionControlStrategy.getMaximumSessionsForThisUser()来实现。引自it's javadoc

  

子类用于覆盖特定身份验证允许的最大会话数的方法。默认实现只返回bean的maximumSessions值。

然后通过以下方式参考您的自定义实现:

<security:session-management 
  session-authentication-strategy-ref="customConcurrentSessionControlStrategy"/>