Ein universelles Muster ('/**') definiert ist, bevor andere Muster in die filter-Kette, wodurch Sie ignoriert werden

Spring Security basic-Beispiel gibt diese Ausnahme.

Fehler: "Ein universelles Muster ('/**') definiert ist, bevor andere Muster in die filter-Kette, wodurch Sie ignoriert werden. Bitte überprüfen Sie die Bestellung in Ihrem Namensraum oder FilterChainProxy bean-Konfiguration"

Ich habe viele Beiträge in diesem Thema. Aber konnte Sie nicht finden keine Lösung. Jeder entfalten können, eine hello spring security?

Ich bin mit diesen Versionen - Spring 3.2.0.RELEASE /Spring security 3.2.0.RELEASE /Tomcat 7 und Java 1.7.

Hier ist mein code:

web.xml

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Spring security sample Web Application</display-name>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-context.xml,
            /WEB-INF/security-context.xml</param-value>
    </context-param>

    <!-- Spring security -->
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>spring-dispatcher-servlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-context.xml</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>spring-dispatcher-servlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

spring-context.xml

<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
    http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd">

    <authentication-manager>
        <authentication-provider>
            <user-service>
                <user name="jay" password="jay" authorities="ROLE_USER" />
            </user-service>
        </authentication-provider>
    </authentication-manager>

    <http auto-config="true">
        <intercept-url pattern="/pages/hello.jsp" access="ROLE_USER" />
    </http>

</beans:beans>

MyController.java

package com.jai.spring.security.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class MyConroller {

    @RequestMapping(value = "/security", method = RequestMethod.GET)
        public String security(Model model) {
            System.out.println("calling ... /security");
            model.addAttribute("name", "Jay");
            return "pages/hello";
        }


    @RequestMapping(value = "/profile", method = RequestMethod.GET)
        public String profile(Model model) {
            System.out.println("calling ... /profile");
            return "user/profile";
        }
}

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.jai.spring.security</groupId>
    <artifactId>springsec</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>springsec Maven Webapp</name>
    <url>http://maven.apache.org</url>

    <properties>
        <spring-version>3.2.0.RELEASE</spring-version>
        <spring-security-version>3.2.0.RELEASE</spring-security-version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>${spring-security-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>${spring-security-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>${spring-security-version}</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.14</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>


    </dependencies>
    <build>
        <finalName>springsec</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>

                <configuration>
                    <url>http://localhost:8080/manager/text</url>
                    <server>localhost</server>
                    <path>/${project.build.finalName}</path>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

Datei-Struktur

Ein universelles Muster ('/**') definiert ist, bevor andere Muster in die filter-Kette, wodurch Sie ignoriert werden

  • Sie haben ein Muster, das auf eine beliebige url, und dann weiter unten definieren Sie ein Muster für die Wurzel, die außer Kraft gesetzt wurde durch das Vorherige Muster. Sie können nicht beides haben!
  • Sind Sie sicher, es gibt keine andere <http> security-Konfigurationen in der Feder zusammenhängen? Niemals sah dieser Fehler vor, aber es sagt im Grunde, dass Sie definiert haben zwei security-filter-Ketten, von denen der erste einfach den gesamten Verkehr aufgrund seiner passenden Muster.
  • Danke Chris. Meinst du innen web.xml ? <url-pattern>/*</url-pattern> & <url-pattern>/</url-pattern> ? Sollte ich dies ändern ?
  • Nur bemerkt Ihr Fehler... Sie sind mit der gleichen Kontext-XML-Datei für das root-Kontext und für die dispatcher-Kontext. Das XML enthält security config so haben Sie eine doppelte Sicherheit definition. Noch mehr... Sie definieren die selben Kontext zweimal für den root-Kontext.
  • Vielen Dank für den Versuch mir zu helfen. Ja für ein trial & error ich fügte hinzu, <init-param><param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-Kontext.xml</param-value></init-param> innerhalb dispatcher und ich haben es entfernt jetzt. Sollte ich korrigieren, was sonst mehr ?
  • Ich beantwortet habe, in eine richtige Antwort. Hoffentlich wird etwas Licht auf Ihre Studien.

InformationsquelleAutor Jay | 2013-12-28
Schreibe einen Kommentar