Frage

Ich brauche eine bestehende Anwendung mit Acegi / Frühjahr Sicherheit zu verbinden.

Um loszulegen ich für ein einfaches Stück Information suchen: in diesem Zusammenhang wird HttpServletRequest.getUserPrincipal () aufgerufen aus meiner Anwendung ordnungsgemäß die Benutzername durch Feder erhalten zurückzukehren (im Gegensatz zu mit Spring spezifischen Objekten gegen)? Ich habe auf diesen Informationen gegoogelt Konflikt zu geraten.

Ich gehe davon aus, dass, wenn Acegi mit Filter implementiert ist, es in der Lage ist, das Servlet-API getUserPrincipal () zu überlasten, nicht wahr?

Untergeordnete Frage: Wenn diese nicht standardmäßig der Fall ist, ist es eine Möglichkeit, um es zu aktivieren

?

Danke,

-Erik

War es hilfreich?

Lösung

Wie schon in früheren Benutzer Antwort hat, Federsicherheitsunterstützung der getUserPrincipal und isUserInRole. Hier ist, wie Frühling Sicherheit tut es.

Wenn Sie Feder konfigurieren, kann es die folgenden Filter laden:

http: // statisch. springframework.org/spring-security/site/reference/html/ns-config.html#filter-stack

Im Rahmen der Standardfilterkonfiguration die SecurityContextHolderAwareRequestFilter Filter geladen wird.

Die Untersuchung der Filter @ https://fisheye.springsource.org/browse/spring-security/tags/spring-security-parent-2.0.4/core/ src / main / java / org / spring / security / Wrapper / SecurityContextHolderAwareRequestFilter.java? r = 2.514

Sie können sehen, es wickelt und ändert das HttpServletRequest Objekt in der SecurityContextHolderAwareRequestWrapper Klasse, die HttpServletRequestWrapper erstreckt, die HttpServletRequest implementiert und ihn an die Standard-Servlet-Filter doFilter Kette zurück. Seit dem Frühjahr Sicherheitsfilter sollte als das erste Filter konfiguriert werden, werden alle nachfolgenden Klassen werden die SecurityContextHolderAwareRequestWrapper stattdessen sehen. Dazu gehört JSP-Seiten oder Servlets hinter diesem Filter.

Wenn Sie einen Anruf tätigen hinter diesem Filter isUserInRole oder getUserPrincipal von der JSP-Seite, Servlets oder einem Rahmen, es ist der Aufruf der HttpServletRequest Implementierung von Spring Security.

Andere Tipps

Wenn Sie die Sicherheitsfilter verwenden, ja es tut. Ich glaube, dies ist das Standardverhalten.

Genau die Klasse, Sie bekommen von Ihrer Konfiguration abhängig zurück, aber sie alle Hauptschnittstelle über Spring eigene org.springframework.security.Authentication-Schnittstelle implementieren, die es erweitert.

Ich habe request.getUserPrincipal () und request.isUserInRole () in einer Frühlings-Anwendung verwendet und es funktioniert nahtlos, auch innerhalb JSPs.

Ich glaube, dass Spring Security speichert diese Informationen in der Security und nicht obwohl in der Anfrage. Man könnte leicht einen FilterSecurityInterceptor schreiben, die diese Informationen auf die Anforderung konfiguriert werden kann, auch hinzuzufügen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top