2014-01-09 164 views
0

我想延長春季安全ConcurrentSessionControlStrategy並重寫它的allowableSessionsExceeded方法。春季SessionRegistry會話ID

在這個方法中,我想使用sessionInformation.getSessionId(),但是我得到了一個不同的會話ID,然後是我在登錄身份驗證期間保存的會話ID。在我保存的驗證中:

String sessionId = ((WebAuthenticationDetails) authentication.getDetails()).getSessionId(); 

爲什麼它不同?我能做些什麼來得到相同的結果?

回答

0

聽起來很像,您正在保存較早的sessionId(在身份驗證之前生成),並且在身份驗證成功後它會失效。

驗證後您需要獲取新的sessionId。

更新:更好的方式來獲得的sessionId

對於這一點,你將需要實現自定義SessionRegistry

public class MySessionRegistry implements SessionRegistry{ 

     @Override 
    public SessionInformation getSessionInformation(String sessionId) { 
     // this is your session id to be saved 
    } 

    } 

,並在上下文註冊爲

<beans:bean id="sessionRegistry" 
     class="com.test.MySessionRegistry"> 
</beans:bean> 
+0

可以肯定的,我需要使用身份驗證後的這個會話ID instad? – lior

+0

你的意思是即使在認證成功後你想使用同一個會話ID嗎? – dhamibirendra

+0

我不明白自定義會話註冊的用途是什麼?我需要使用它嗎?這改變了sessionInformation.getSessionId()? – lior