Frühjahr-Methode Level Security schlägt fehl, auf den zweiten Anruf

Möchte ich mit der Methode level-security auf meinem GWT-Anwendung. Ich versuche, Spring Security 3.1, da fand ich ein funktionsfähiges Beispiel hier, nicht aber die form-login. Nach der Lektüre diese Antwort der erste Aufruf der Methode erfolgreich, erhält der SecurityContext, aber dann löscht es, bevor der nächste Anruf:

[org.springframework.security.web.context.HttpSessionSecurityContextRepository] - Obtained a valid SecurityContext from SPRING_SECURITY_CONTEXT: 'org.springframework.security.core.context.SecurityContextImpl@6fe9f089: Authentication: org.example.MyAppName.server.auth.MyAppNameUserAuthentication@6fe9f089'
...
[org.springframework.security.access.intercept.aspectj.AspectJMethodSecurityInterceptor] - Authorization successful
...
[org.springframework.security.web.context.SecurityContextPersistenceFilter] - SecurityContextHolder now cleared, as request processing completed
...
[org.springframework.security.web.context.HttpSessionSecurityContextRepository] - SecurityContext is empty or contents are anonymous - context will not be stored in HttpSession.
[org.springframework.security.web.context.SecurityContextPersistenceFilter] - SecurityContextHolder now cleared, as request processing completed
...
[org.springframework.security.web.context.HttpSessionSecurityContextRepository] - HttpSession returned null object for SPRING_SECURITY_CONTEXT

Dem zweiten Aufruf geschieht direkt nach der ersten und nur, nachdem der Benutzer anmeldet.

Ist es, weil ich folgte dem anderen Antwort, und entfernt <http pattern="/MyAppName/**" security="none" /> und Hinzugefügt <intercept-url pattern="/MyAppName/**" access="permitAll()" />?

Meine Filter sind wie folgt:

<http pattern="/favicon.ico" security="none" />

<http access-decision-manager-ref="accessDecisionManager" use-expressions="true" auto-config="false" entry-point-ref="LoginUrlAuthenticationEntryPoint">
  <form-login login-page="/Login.html" always-use-default-target="true" default-target-url="/Main.html?gwt.codesvr=127.0.0.1:9997" />
  <intercept-url pattern="/Login.html" access="permitAll()" />
  <intercept-url pattern="/Login2.html" access="permitAll()" />
  <intercept-url pattern="/MyAppName/**" access="permitAll()" />
  <intercept-url pattern="/**" access="isAuthenticated()" />
  <logout delete-cookies="JSESSIONID" logout-success-url="/Login.html" />
  <remember-me token-validity-seconds="86400" key="key" user-service-ref="userDetailsService" />
</http>

Folgenden das Beispiel, das ich erhalten, die ich verwenden AspectJ für die Globale Methode, die Sicherheit, aber würde es nicht verwenden, wenn ich Sie bekommen könnte, dass die Arbeit:

<global-method-security secured-annotations="enabled" pre-post-annotations="enabled" mode="aspectj" proxy-target-class="true" >
  <expression-handler ref="expressionHandler"/>
</global-method-security>

Vielen Dank für die Zeit nehmen, dies zu Lesen

Bitte lassen Sie mich wissen, wenn mehr detail ist erforderlich.

  • Ich glaube, Sie brauchen, um es zu trimmen Weg mehr nach unten zu etwas überschaubar, nicht viele werden sich die Mühe, Lesen und waten durch diesen text, um zu versuchen, um herauszufinden, was das problem sein könnte.
  • Vielen Dank für Ihren Kommentar. Ich habe versucht, entfernt die logs von 2 der 3 erfolgreiche Anrufe, wie Sie waren wahrscheinlich überflüssig.
InformationsquelleAutor WhiteKnight | 2011-07-11
Schreibe einen Kommentar