简体   繁体   English

Spring Security-未定义名为“ springSecurityFilterChain”的Bean

[英]Spring Security - No bean named 'springSecurityFilterChain' is defined

The following configuration gives me No bean named 'springSecurityFilterChain' is defined error.My question is why this happening and not how I can resolve this. 下面的配置给我No bean named 'springSecurityFilterChain' is defined错误。我的问题是为什么会这样,而不是我怎么解决这个问题。 I am able to resolve this successfully using org.springframework.web.context.support.AnnotationConfigWebApplicationContext 我能够使用 org.springframework.web.context.support.AnnotationConfigWebApplicationContext成功解决此问题

web.xml web.xml

<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <display-name>Spring MVC Application</display-name>
    <!-- Spring MVC -->
    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/applicationContext.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>
</web-app>

applicationContext.xml applicationContext.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.0.xsd
    http://www.springframework.org/schema/security
    http://www.springframework.org/schema/security/spring-security-3.2.xsd">

    <beans:bean class="com.mkyong.web.controller.SecurityConfig"></beans:bean>

</beans:beans>

SecurityConfig.java SecurityConfig.java

@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    public void registerGlobalAuthentication(AuthenticationManagerBuilder auth)
            throws Exception {
        auth.inMemoryAuthentication().withUser("arun").password("arun")
                .roles("ADMIN");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/admin/**")
                .access("hasRole('ROLE_ADMIN')").antMatchers("/dba/**")
                .access("hasRole('ROLE_ADMIN') or hasRole('ROLE_DBA')").and()
                .formLogin();
    }
}

You are attempting to bootstrap Java Configuration from XML , so you need to include <context:annotation-config/> in applicationContext.xml . 您试图从XML引导Java配置 ,因此需要在applicationContext.xml中包含<context:annotation-config/> For example: 例如:

<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.xsd
    http://www.springframework.org/schema/security
    http://www.springframework.org/schema/security/spring-security.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">

    <beans:bean class="com.mkyong.web.controller.SecurityConfig">
    <context:annotation-config/>   
</beans:beans>

Alternatively, you can switch to using [AnnotationConfigWebApplicationContext] by updating your web.xml 2 : 另外,您可以通过更新web.xml 2来切换为使用[AnnotationConfigWebApplicationContext]:

<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <display-name>Spring MVC Application</display-name>
    <!-- Spring MVC -->
    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

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


    <!-- START UPDATES -->
    <context-param>
        <param-name>contextClass</param-name>
        <param-value>
            org.springframework.web.context.support.AnnotationConfigWebApplicationContext
        </param-value>
    </context-param>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>com.mkyong.web.controller.SecurityConfig</param-value>
    </context-param>  
    <!-- END UPDATES -->


    <!-- 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>
</web-app>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Spring 4 Spring Security 3.2.2没有定义名为“ springSecurityFilterChain”的bean - Spring 4 Spring Security 3.2.2 No bean named 'springSecurityFilterChain' is defined “未定义名为&#39;springSecurityFilterChain&#39;的bean” Java Config Spring安全性 - “No bean named 'springSecurityFilterChain' is defined” Java Config Spring security java配置的春季安全性,未定义名为“ springSecurityFilterChain”的bean错误 - spring security with java config , No bean named 'springSecurityFilterChain' is defined error Spring Security错误没有名为&#39;springSecurityFilterChain&#39;的bean可用 - Spring Security Error No bean named 'springSecurityFilterChain' available Spring安全问题:没有名为“ springSecurityFilterChain”的bean - Spring security Issue: No bean named 'springSecurityFilterChain' spring mvc没有定义名为&#39;springSecurityFilterChain&#39;的bean - spring mvc No bean named 'springSecurityFilterChain' is defined 未定义名为“ springSecurityFilterChain”的bean-Spring 4 Java配置 - No bean named 'springSecurityFilterChain' is defined - Spring 4 Java configuration 没有定义名为“ springSecurityFilterChain”的bean - No bean named 'springSecurityFilterChain' is defined JavaConfig 没有定义名为“springSecurityFilterChain”的 bean - JavaConfig No bean named 'springSecurityFilterChain' is defined 如何修复未定义名为“ springSecurityFilterChain”的bean - How to fix No bean named 'springSecurityFilterChain' is defined
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM