Wiosenne bezpieczeństwo „zapamiętaj mnie” cookie niedostępne na pierwsze żądanie

Nie udało mi się odzyskać Springa zapamiętaj ciasteczko po żądaniu logowania, ale działa ono poprawnie w następnym żądaniu na chronionej stronie. Czy ktoś mógłby mi powiedzieć, jak mogę go od razu zdobyć?

Ustawiam plik cookie „zapamiętaj mnie” w żądaniu logowania, ale nie mogę go odzyskać po przekierowaniu Spring do oryginalnego (chronionego) adresu URL.

Krok po kroku:

Przeglądarka przechodzi do example.com/protectedSpring przekierowuje na stronę logowaniaPo pomyślnym zalogowaniu SPRING_SECURITY_REMEMBER_ME_COOKIE jest ustawiany w bardzo cienkiej niestandardowej klasie podrzędnej org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServicesWygląda na to, że Spring przekierowuje z powrotem do example.com/protected, bez obiegu do przeglądarki, a zarówno serwlet logowania, jak i chroniona strona są obsługiwane przez ten sam wątek w Tomcat 6.Nasza podklasa org.springframework.security.web.access.expression.WebSecurityExpressionRoot ma metody wywoływane z <intercept-url pattern = "..." access = "method ()" />W naszej metodzie () request.getCookies () nie daje ciasteczku pamięci zapamiętanej na pierwszym żądaniu, ale na wszystkie późniejsze żądania.Nasza aplikacja ma pewne problemy, ponieważ brakuje pliku cookie ...

Moja dotychczasowa teoria jest taka, że ​​nie rozumiem poprawnie SavedRequest.

Skondensowana konfiguracja tutaj:

<http auto-config="false" use-expressions="true" authentication-manager-ref="myAuthenticationManager" path-type="regex">
    <form-login authentication-success-handler-ref="myAuthenticationSuccessHandler" login-page="..." login-processing-url="..." authentication-failure-url="..." username-parameter="username" password-parameter="password" />

    <custom-filter ref="logoutFilter" position="LOGOUT_FILTER"/>
    <expression-handler ref="myWebSecurityExpressionHandler" />

    <custom-filter ref="myCustomeFilter1" before="FORM_LOGIN_FILTER"/>
    <custom-filter ref="myCustomeFilter2" position="BASIC_AUTH_FILTER"/>
    <custom-filter ref="mySecurityClientTokenAuthenticationFilter" after="LOGOUT_FILTER" />

    <access-denied-handler ref="myAccessDeniedHandler"/>
    <intercept-url pattern="xxx"
                   access="method()"/>

    <intercept-url pattern="yyy"
                   access="method()"/>
    <remember-me services-ref="rememberMeServices"  key="my_remember"/>
</http>

Próbowałem dodać poniższe, z jedynym skutkiem, że użytkownik nie zostanie przekierowany na oryginalną stronę.

<http ...
    <request-cache ref="nullRequestCache"/>
</http>
<bean:bean id="nullRequestCache" class="org.springframework.security.web.savedrequest.NullRequestCache"/>

questionAnswers(1)

yourAnswerToTheQuestion