/ / Spring security 3.0: SavedRequest zawsze null - java, spring, spring-security

Spring security 3.0: SavedRequest zawsze null - java, spring, spring-security

W mojej aplikacji korzystam z Spring Security 3.0, aw klasie przechwytywania „po uwierzytelnieniu” mam coś takiego:

public class CustomAuthenticationHandler extends SavedRequestAwareAuthenticationSuccessHandler {

public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws ServletException, IOException {

SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response);
...
}
}
<security:http>
<security:form-login login-page="/login/" always-use-default-target="false"  authentication-success-handler-ref="customAuthenticationHandler" authentication-failure-url="/login/?login_error=1"/>
...
</security:http>

<bean id="customAuthenticationHandler" class="org.myproject.CustomAuthenticationHandler"/>

Kiedy loguję się ze strony ogólnej „X” wewnątrzaplikacja Oczekuję przekierowania po udanym uwierzytelnieniu do „X”, ale zawsze trafiam na stronę główną. Powyższa zmienna „saveRequest” zwraca zawsze wartość null. Czy brakuje jakiegoś konkretnego ustawienia? Jak mogę uzyskać prawidłowe przekierowanie?

Odpowiedzi:

0 dla odpowiedzi № 1

To naprawdę zależy od tego, co rozumiesz przez „zaloguj się ze strony ogólnej„ X ”w aplikacji”.

Jeśli masz na myśli, że już przeglądasz tę stronę inastępnie wybierz dostęp do strony logowania (lub masz osadzony formularz logowania), wtedy nie zostaniesz przekierowany do strony „X”, ponieważ Spring Security nie ma pojęcia, na której stronie byłeś, kiedy zdecydowałeś się zalogować. albo przekierować do lokalizacji podanej przez Referer nagłówek lub zapisz historię wyświetleń strony w logice aplikacji.

The SavedRequest mechanizm jest używany tylko w przypadku, gdy próbujeszaby uzyskać dostęp do chronionego zasobu, Spring Security musi przekierować Cię na stronę logowania. Zapisuje tymczasowo lokalizację, aby móc spróbować przywrócić pierwotne zachowanie żądania po zalogowaniu.

Jeśli „X” był chronioną stroną i próbowałeś ją wyświetlić, a SavedRequest z adresem URL „X” byłoby być buforowany w sesji, podczas gdy zostałeś przekierowany na stronę logowania.