Vor kurzem hat Spring Security die Möglichkeit gegeben, mehrere <http>
-Elemente zu konfigurieren. Ich versuche, eine Konfiguration für alle URLs, die das Muster / foo / * und eine andere für den Rest abbildet. Jetzt habe ich zwei Anmeldeseiten, die in / login und die andere in / foo login gesetzt sind. Also ich möchte, dass alle URLs, die map / foo / ** einloggen, gegen / foo / login einloggen.
Ich habe eine Konfiguration wie die folgende erstellt, aber wenn ich eine URL wie / foo / something (die dem anonymen Benutzer nicht erlaubt sein soll) anstelle von / foo / login eingeben gehe ich zu / login.
Die Spring Security-Version ist 3.1.0.RC1 . Irgendeine Idee von dem, was passieren könnte?
Danke.
%Vor%Nur eine Vermutung. Könnte es sein, dass die Muster additiv sind?
Also die folgende Anmerkung:
%Vor% fängt /foo/foo/**
ab. Dies führt dazu, dass eine foo/something
-Anforderung von Ihrer zweiten HTTP-Definition abgefangen wird, die mit pattern="/**"
Das AuthenticationEntryPoint
ist verantwortlich für die Weiterleitung zur Anmeldeseite. Sie haben einen benutzerdefinierten Einstiegspunkt eingegeben, der das Attribut login-page
für Ihr Element form-login
überschreibt.
Führt ajaxAuthenticationEntryPoint
auf /login
um?
Idealerweise sollte Spring Security erkennen, ob Sie versuchen, einen benutzerdefinierten Einstiegspunkt und ein login-page
zu verwenden und eine Warnung zu melden.
Wenn das Musterattribut im http-Element verwendet wird, bewirkt Spring Security 3.1, dass dieses Muster auf die URL angewendet wird, bevor die restlichen inneren Elemente gelesen werden. Wenn es nicht übereinstimmt, ignoriert es alle inneren Elemente und fährt mit der nächstes http-Element.
Stimmt etwas auf Ihrer Anmeldeseite für / foo / login mit einer Ressource überein, die durch das Muster / ** abgedeckt ist?
Tags und Links spring spring-security