Frühjahr SecurityContext null zurückgeben Authentifizierung auf Fehler-Seiten

Bin ich zu schreiben versucht, eine benutzerdefinierte Fehlerseite für den Fehler 403 (Zugriff verweigert) und 500 (internal server error). Sie würde gerendert werden, die vom Velocity-template und habe alle Nachrichten übersetzt, die Verwendung von Benutzer-Gebietsschema. Authentifizierung und locale-Auflösung funktioniert einwandfrei in der Anwendung.

Habe ich eingerichtet, Lage in web.xml die gewünschte Seite und in webmvc-context.xml ich fügte hinzu, requet-to-view-controller via .

Das problem, das ich gestoßen bin, ist, dass SecurityContextHolder.getContext().getAuthentication() gibt null zurück, die Fehler-Seite anzeigen. Beim Blick auf das log sah ich:

06.10 14:42:26 DEBUG - context.HttpSessionSecurityContextRepository(HttpSessionSecurityContextRepository.java:351) -  - SecurityContext stored to HttpSession: 'org.springframework.security.core.context.SecurityContextImpl@ece7b0b7: Authentication: ...
06.10 14:42:26 DEBUG - context.SecurityContextPersistenceFilter(SecurityContextPersistenceFilter.java:89) -  - SecurityContextHolder now cleared, as request processing completed
06.10 14:42:26 DEBUG - servlet.DispatcherServlet(DispatcherServlet.java:691) -  - DispatcherServlet with name 'foo' processing GET request for [/foo/app/error/403.html]

Also entweder Spring oder Tomcat redirect auf eine Fehlerseite und die Anforderung gest abgeschlossen, so ist der Kontext gelöscht. Und die neue "Anfrage" nicht Unterziehen, Spring Security Filter, damit nicht wieder der Kontext.

Den üblichen Weg nicht funktioniert, aber es scheint, dass die Authentifizierung Informationen, die irgendwo in der session, auch weil AbstractTemplateView meldet Folgendes:

Exposing session attribute 'SPRING_SECURITY_CONTEXT' with value [org.springframework.security.core.context.SecurityContextImpl@edfbd958: Authentication: org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationToken@edfbd958...

Wie kann ich richtig erhalten, so dass die normalen und Fehler-Seiten würde das gleiche handeln?

InformationsquelleAutor Infeligo | 2011-06-10
Schreibe einen Kommentar