Bestimmen der Ziel-URL basierend auf Rollen in der Spring-Sicherheit 3.1

8

Im Frühjahr 3.0 haben wir die AuthenticationProcessingFilter -Klasse, in der wir determineTargetUrl() method verwenden, die die URL basierend auf verschiedenen Rollen zurückgegeben hat.

Nun bewegen wir uns zu Spring Security 3.1.0.RC3 und ich bin fest, wie ich jetzt die URL basierend auf verschiedenen Rollen ermitteln sollte, da AuthenticationProcessingFilter class aus der neuen Version entfernt wurde. Kann mir jemand bitte einige Schritte in Kürze mit etwas Code geben, damit ich benutzerdefinierte Filter implementieren kann, um auf verschiedene Seiten für verschiedene Rollen umzuleiten.

    
Mital Pritmani 30.11.2011, 13:19
quelle

1 Antwort

19

Der beste Weg, um die Ziel-URL basierend auf Rollen zu ermitteln, besteht darin, eine Ziel-URL in Ihrer Spring Security-Konfiguration anzugeben, wie unten gezeigt. Dies funktioniert in Frühling 3.0 oder 3.1

%Vor%

Erstellen Sie dann einen Controller, der die Standardziel-URL verarbeitet. Der Controller sollte basierend auf Rollen umleiten oder weiterleiten. Unten ist ein Beispiel für die Verwendung von Spring MVC, aber jede Art von Controller funktioniert (d. H. Struts, ein Servlet usw.).

%Vor%

Die Vorteile dieses Ansatzes liegen darin, dass er nicht an eine bestimmte Implementierung von Security gekoppelt ist, dass er nicht an eine bestimmte MVC-Implementierung gekoppelt ist und dass er problemlos mit der Namespace-Konfiguration von Spring Security funktioniert. Ein vollständiges Beispiel finden Sie im SecureMail Projekt, das ich dieses Jahr auf SpringOne vorgestellt habe.

Alternativ können Sie eine benutzerdefinierte AuthenticationSuccessHandler . Die Implementierung könnte SavedRequestAwareAuthenticationSuccessHandler, den standardmäßigen AuthenticationSuccessHandler, erweitern. Es könnte dann mit dem Namespace verdrahtet werden, wie unten gezeigt.

%Vor%

Ich würde dies nicht empfehlen, da es an Spring Security APIs gebunden ist, und es ist besser, wenn möglich zu vermeiden.

    
Rob Winch 30.11.2011 14:36
quelle