2015-06-14 92 views
-2

我是啓動spring項目的新手,我有題目問題。org.springframework.beans.factory.NoSuchBeanDefinitionException:沒有名爲'springSecurityFilterChain'的bean被定義 - JAVA配置

我不知道我該如何解決它,我有相同的配置和文件來啓動春天在其他項目和它的作品。這裏不是,我不知道爲什麼。

我的代碼是:

行家 ` 演示 演示 1.0快照

<properties> 
    <javax.trans.ver>1.1</javax.trans.ver> 
    <javax.ver>2.5</javax.ver> 
    <spring.base.version>4.1.5.RELEASE</spring.base.version> 
    <spring.security.version>4.0.1.RELEASE</spring.security.version> 
    <spring.data.ver>1.8.0.RELEASE</spring.data.ver> 
    <hib.core.ver>4.3.10.Final</hib.core.ver> 
    <hib.jpa.supp.ver>4.3.10.Final</hib.jpa.supp.ver> 
    <hib.val.ver>5.1.3.Final</hib.val.ver> 
    <mysql.conn.ver>5.1.6</mysql.conn.ver> 
    <junit.ver>4.12</junit.ver> 
    <jstl.verion>1.2</jstl.verion> 
    <cglib.version>3.1</cglib.version> 
    <log4j.version>1.2.17</log4j.version> 
</properties> 

<dependencies> 

    <dependency> 
     <groupId>javax.transaction</groupId> 
     <artifactId>jta</artifactId> 
     <version>${javax.trans.ver}</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>${javax.ver}</version> 
    </dependency> 

    <!--Spring stuff--> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${spring.base.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${spring.base.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>${spring.base.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${spring.base.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</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>${spring.base.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>${spring.base.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-jpa</artifactId> 
     <version>${spring.data.ver}</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-aop</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

    <!--My sql conn--> 

    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>${mysql.conn.ver}</version> 
    </dependency> 

    <!--Hibernate--> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>${hib.core.ver}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>${hib.jpa.supp.ver}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>${hib.val.ver}</version> 
    </dependency> 

    <!--Junit--> 

    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>${junit.ver}</version> 
    </dependency> 

    <!--JSTL--> 

    <dependency> 
     <groupId>jstl</groupId> 
     <artifactId>jstl</artifactId> 
     <version>${jstl.verion}</version> 
    </dependency> 

    <!--Stuff--> 

    <dependency> 
     <groupId>cglib</groupId> 
     <artifactId>cglib</artifactId> 
     <version>${cglib.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>${log4j.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-simple</artifactId> 
     <version>1.7.10</version> 
    </dependency> 

    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.7.10</version> 
    </dependency> 

</dependencies> 

`

春季安全初始化:

package ro.stefan.configs; 

    import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer; 

    public class SpringSecurityInitializer extends AbstractSecurityWebApplicationInitializer { 

    } 

春季安全配置:

package ro.stefan.configs; 


import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; 
import org.springframework.security.config.annotation.web.builders.HttpSecurity; 
import org.springframework.security.config.annotation.web.builders.WebSecurity; 
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; 
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; 
import ro.stefan.serv.UsersDetailsServiceImpl; 

@Configuration 
@EnableWebSecurity 
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { 

    @Autowired 
    UsersDetailsServiceImpl usersDetailsService; 

    @Autowired 
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
     auth.inMemoryAuthentication().withUser("stefan").password("1234").roles("USER"); 
     auth.userDetailsService(usersDetailsService); 
    } 

    @Override 
    public void configure(WebSecurity web) throws Exception { 
     web.ignoring().antMatchers("/res/**"); 
    } 

    //.csrf() is optional, enabled by default, if using WebSecurityConfigurerAdapter constructor 
    @Override 
    protected void configure(HttpSecurity http) throws Exception { 

     http.authorizeRequests() 
       .antMatchers("/main/**").access("hasRole('ROLE_ADMIN')") 
       .and() 
       .formLogin().loginPage("/admin").failureUrl("/admin?error") 
       .usernameParameter("username").passwordParameter("password").defaultSuccessUrl("/main") 
       .and() 
       .logout().logoutUrl("/logout").logoutSuccessUrl("/admin?logout") 
       .and() 
       .csrf(); 
     // http.formLogin().loginPage("/admin/login").failureUrl("/admin/login?error").defaultSuccessUrl("/main",true).usernameParameter("username").passwordParameter("password"); 

    } 
} 

web.xml中:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     version="3.1"> 

    <display-name>Demo App</display-name> 

    <servlet> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>WEB-INF/servletConfig.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

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

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>classpath:/jpaContext.xml</param-value> 
    </context-param> 

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

servletConfig.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:mvc="http://www.springframework.org/schema/mvc" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation=" 
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd"> 

    <!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --> 

    <!-- Scans within the base package of the application for @Components to configure as beans --> 
    <!-- @Controller, @Service, @Configuration, etc. --> 
    <context:component-scan base-package="ro.stefan" /> 

    <!-- Enables the Spring MVC @Controller programming model --> 
    <mvc:annotation-driven /> 
    <mvc:resources location="WEB-RES/" mapping="/res/**" /> 

</beans> 

非常謝謝!

+0

在web.xml springSecurityFilterChain過濾器映射丟失。 – Waqar

+0

我必須爲此付出沉重的代價並道歉......但是至少每週一次在SO上詢問和回答根與servlet上下文配置混淆的問題。請按照正式文件和**不要使用**或混合舊的教程。 –

回答

-1

你能把springSecurityFilter鏈 -

例如,

<context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      classpath:/jpaContext.xml, 
      /WEB-INF/servletConfig.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> 
+0

本文檔幫助了很多http://docs.spring.io/spring-security/site/docs/3.0.x/reference/security-filter-chain.html#delegating-filter-proxy – Waqar

相關問題