Ein universelles Übereinstimmungsmuster ('/ **') wird vor anderen Mustern in der Filterkette definiert, wodurch sie ignoriert werden

8

Das Basisbeispiel von Spring Security gibt diese Ausnahme.

Fehler: "Ein universelles Vergleichsmuster ('/ **') wird vor anderen Mustern in der Filterkette definiert, wodurch sie ignoriert werden. Bitte überprüfen Sie die Reihenfolge in Ihrem Namespace oder der FilterChainProxy-Bean-Konfiguration"

Ich habe viele Beiträge zu diesem Thema überprüft. Aber konnte keine Lösung finden. Jeder in der Lage, eine Hallo Frühling Sicherheit zu implementieren?

Ich verwende diese Versionen - Spring 3.2.0.RELEASE / Spring security 3.2.0.RELEASE / Tomcat 7 / Java 1.7.

Hier ist mein Code:

web.xml

%Vor%

spring-context.xml

%Vor%

MyController.java

%Vor%

pom.xml

%Vor%

Dateistruktur

    
Jay 28.12.2013, 08:54
quelle

1 Antwort

13

Sie verwenden fälschlicherweise Ihre XML-Kontextdateien, die zu einer doppelten Bean-Definition (einschließlich der Sicherheitskonfiguration) führen. Und <http> -Konfiguration ohne pattern -Attribut entspricht /** = & gt; dein Fehler.

Hier definieren Sie die Stamm-XML-Kontextdatei für das Servlet:

%Vor%

Erstellen Sie stattdessen eine neue Kontextkonfiguration (Sie können diese Deklaration weglassen, wenn Sie den Standardnamen verwenden, nämlich {your-servlet-name}-servlet.xml = & gt; spring-dispatcher-servlet-servlet.xml ):

%Vor%

Der Unterschied zwischen den Kontexten root und servlet wurde hier in StackOverflow mehrfach diskutiert. Grundsätzlich sollte der root-Kontext ( spring-context.xml und security-context.xml in Ihrem Fall) Application-Wide-Beans (Dienste, DAOs, einschließlich Sicherheitskonfiguration) und der Dispatcher-Kontext ( dispatcher-servlet.xml in meinem Beispiel) Dispatcher-Servlet-spezifische Beans wie Controller enthalten , Resolver anzeigen usw.

Weiterführende Literatur:

Pavel Horal 28.12.2013, 09:21
quelle

Tags und Links