2014-01-09 3 views
0

Я пытаюсь расширить пружинную безопасность ConcurrentSessionControlStrategy и переопределить ее метод allowableSessionsExceeded.Spring SessionRegistry session id

В этом методе я хочу использовать sessionInformation.getSessionId(), но я получаю другой идентификатор сеанса, который я сохранил во время проверки подлинности в журнале. При проверке подлинности я сохранил:

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

Почему это другое? Что я могу сделать, чтобы получить то же самое?

ответ

0

Похоже, что вы сохраняете предыдущий 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

Чтобы быть уверенным, , Мне нужно использовать этот идентификатор идентификатора сеанса после проверки подлинности? – lior

+0

Вы хотите, чтобы вы использовали тот же идентификатор сеанса даже после успешной аутентификации? – dhamibirendra

+0

Я не понимаю, для чего нужна пользовательская Sessionregistry? мне нужно было его использовать? это изменяет sessionInformation.getSessionId()? – lior

Смежные вопросы