Frühlings-Sicherheits-Cookie 'Remember Me' ist bei der ersten Anfrage nicht verfügbar

Ich kann das Spring Remember Me-Cookie nach der Anmeldeanforderung nicht abrufen, es funktioniert jedoch bei der nächsten Anforderung einer geschützten Seite. Kann mir bitte jemand sagen, wie ich sofort darauf zugreifen kann?

Ich setze das Remember-Me-Cookie in der Anmeldeanforderung, kann es jedoch nicht abrufen, nachdem Spring zur ursprünglichen (geschützten) URL zurückgeleitet hat.

Schritt für Schritt:

Der Browser wechselt zu example.com/protectedSpring leitet zur Anmeldeformularseite weiterBei erfolgreicher Anmeldung wird SPRING_SECURITY_REMEMBER_ME_COOKIE in einer sehr dünnen benutzerdefinierten Unterklasse von org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices festgelegtEs sieht so aus, als würde Spring zurück zu example.com/protected umleiten, ohne einen Roundtrip zum Browser durchzuführen, und Anmeldeservlet und geschützte Seite werden von demselben Thread in Tomcat 6 behandelt.Unsere Unterklasse von org.springframework.security.web.access.expression.WebSecurityExpressionRoot enthält Methoden, die von einer <intercept-url pattern = "..." access = "method ()" /> aufgerufen werdenIn unserer Methode () gibt request.getCookies () das Remember Me-Cookie nicht bei der ersten Anfrage, sondern bei allen nachfolgenden Anfragen.Unsere App hat einige Probleme, weil der Cookie fehlt ...

Nach meiner bisherigen Theorie verstehe ich SavedRequest nicht richtig.

Condensed Config hier:

<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>

Ich habe versucht, Folgendes hinzuzufügen, mit dem einzigen Ergebnis, dass der Benutzer nicht auf die ursprüngliche Seite umgeleitet wird.

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage