Spring Security benutzerdefinierter Filter

8

Ich möchte Spring security 3.0.5 anpassen und die Login-URL zu / login anstelle von / j_spring_security_check ändern.

Was ich tun muss, ist es, sich im Verzeichnis "/" einzuloggen und die Seite "/admin/report.html" zu sichern.

Als Erstes erstelle ich meinen eigenen Filter mit Tutorial und Spring Security Quellcode:

%Vor%

nach Es mache ich die folgenden Änderungen in XML

%Vor%

und dann habe ich JSP mit meinem Code.

%Vor%

Wenn ich versuche, zu /admin/report.html zu navigieren, werde ich zur Anmeldeseite weitergeleitet. Aber nachdem ich die Anmeldeinformationen gesendet habe, bekomme ich:

%Vor%

Es sieht so aus, als hätte ich Probleme bei der Konfiguration, aber ich kann nicht herausfinden, was das verursacht. Können Sie mir helfen?

    
danny.lesnik 11.05.2011, 22:46
quelle

2 Antworten

0

Ich denke, dass @Ischin sich über die Formaktion url wundern kann. Versuchen Sie, den vollständigen Pfad einzugeben, und sehen Sie, ob das funktioniert. Wenn dies der Fall ist, können Sie von dort aus arbeiten, um herauszufinden, was nicht zusammenpasst.

Das Einzige, was ich mir vorstellen kann, ist das Filter-Mapping in Ihrer web.xml. Da Sie die Login-Seite treffen, haben Sie dies eingerichtet, aber ich würde prüfen, ob Sie nicht nur URLs mit bestimmten Erweiterungen usw. abfangen.

Wenn Sie die Anfrage (nachdem das Login-Formular den Benutzer authentifiziert hat) möchten, dass Sie die gesicherte Ressource (in diesem Fall /admin/report.html) aufrufen, sollten Sie das Formular auch immer löschen: login always -use-default-target="Wahr". Wenn Sie dieses Flag auf "true" setzen, wird die Anforderung immer an die Standard-Ziel-URL gesendet, was normalerweise nicht der Fall ist. Aus den Spring-Sicherheitsdokumenten :

  

Ordnet die Eigenschaft "DefaultTargetUrl" zu   von   BenutzernamePasswordAuthenticationFilter.   Wenn nicht festgelegt, ist der Standardwert "/"   (der Anwendungsstamm). Ein Benutzer wird sein   nach dem Einloggen in diese URL übernommen   vorausgesetzt, sie wurden nicht aufgefordert, sich anzumelden   beim Versuch, auf eine gesicherte Verbindung zuzugreifen   Ressource, wann sie aufgenommen werden   die ursprünglich angeforderte URL.

    
Matt 10.06.2011, 16:40
quelle
10

Ich bin etwa 12 Monate zu spät dran, aber um die Anmelde-URL des Spring Security Formular-Logins anzupassen, müssen Sie keinen eigenen Filter erstellen. Mit einem der Attribute des Formular-Login-Tags können Sie eine benutzerdefinierte URL festlegen. Sie können die standardmäßigen Feldnamen j_username und j_password auch mithilfe von Attributen des Tags form-login ändern. Hier ist ein Beispiel:

%Vor%     
Alessandro Giannone 21.05.2012 23:09
quelle