No bean named 'springSecurityFilterChain' is defined

1.问题

本文讨论Spring安全配置问题 - 应用程序引导过程抛出以下异常:

SEVERE: Exception starting filter springSecurityFilterChain
org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No bean named 'springSecurityFilterChain' is defined

2.原因

此异常的原因很简单 - Spring Security查找名为springSecurityFilterChain的bean(默认情况下),但无法找到它。主要的Spring安全过滤器 - DelegatingFilterProxy - 在web.xml中定义了这个bean:


    springSecurityFilterChain
    org.springframework.web.filter.DelegatingFilterProxy


    springSecurityFilterChain
    /*

这只是一个代理,它将其所有逻辑委托给springSecurityFilterChain bean

3.解决方案

上下文中缺少此bean的最常见原因是security XML配置没有定义 元 素:



 

如果使用XML配置Security命名空间 - 如上例所示,则声明一个简单的 元素将确保创建过滤器bean并且所有内容都正确启动:


    

另一个可能的原因是Security配置根本不会导入到Web应用程序的整体上下文中。

如果安全性XML配置文件名为springSecurityConfig.xml,请确保导入资源:

@ImportResource({"classpath:springSecurityConfig.xml"})

或者用XML:

最后,可以在web.xml中更改过滤器bean的默认名称 - 通常使用带有Spring Security的现有过滤器:


    springSecurityFilterChain
    
      org.springframework.web.filter.DelegatingFilterProxy
    
    
        targetBeanName
        customFilter
    

4.总结

文讨论了一个非常具体的Spring Security问题 - 缺少过滤器链bean - 并展示了这个常见问题的解决方案

你可能感兴趣的:(No bean named 'springSecurityFilterChain' is defined)