我正在使用spring-security 3.1。Custom ConcurrentSessionControlStrategy
我必須以最大會話數由用戶指定的方式實現會話併發策略。下面是我做的:
編碼擴展 org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy類和推翻的方法
protected int getMaximumSessionsForThisUser(Authentication authentication)
我使用了命名空間配置它配置:
<security:http>
...
<security:session-management session-authentication-strategy-ref="mySessionAuthenticationStrategy"/>
...
</security:http>
<bean id="mySessionAuthenticationStrategy" class="foo.bar.MySessionAuthenticationStrategy">
<constructor-arg ref="sessionRegistry"/>
</bean>
<bean id="sessionRegistry"
class="org.springframework.security.core.session.SessionRegistryImpl" />
問題是「MySessionAuthenticationStrategy」從不會被調用:(
我在春天API挖地看到,在SessionManagementFilter
以下行(70)是假的(防止任何SessionAuthenticationStrategy
被調用):
if (!securityContextRepository.containsContext(request))
這是爲什麼? 我閱讀他們建議在UsernamePasswordAuthenticationFilter
中設置會話身份驗證策略的文檔,但由於我將表單登錄和SAML登錄以及驗證身份驗證令牌的機制(3種不同的身份驗證機制)相結合,因此它不適合我。
你們中的任何人都可以提供幫助嗎?
非常好的解釋,你是對的。我的PreAuthentication過濾器使用一個使用會話的AuthenticationSuccessHandler(創建一個)。謝謝 ! – baraber