当前位置: 首页 > 知识库问答 >
问题:

Spring Security:没有定义名为“springSecurityFilterChain”的bean

贲高寒
2023-03-14

我刚刚为一个简单的Spring测试项目配备了基本的身份验证功能。当服务器加载时,我会得到一个众所周知的错误org。springframework。豆子。工厂NoSuchBeanDefinitionException:未定义名为“springSecurityFilterChain”的bean。

<代码>web。xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/root-context.xml</param-value>
    </context-param>

    <!-- Creates the Spring Container shared by all Servlets and Filters -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- Processes application requests -->
    <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>


  <!-- Activate 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>

servlet上下文。xml包含与安全相关的配置:

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

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

    <!-- Enables the Spring MVC @Controller programming model -->
    <annotation-driven />

    <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
    <resources mapping="/resources/**" location="/resources/" />

    <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
    <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <beans:property name="prefix" value="/WEB-INF/views/" />
        <beans:property name="suffix" value=".jsp" />
    </beans:bean>

    <sec:http auto-config='true'>
        <sec:intercept-url pattern="/**" access="ROLE_USER" />
    </sec:http>
    <sec:authentication-manager>
        <sec:authentication-provider>
            <sec:user-service>
                <sec:user name="jimi" password="jimispassword" authorities="ROLE_USER, ROLE_ADMIN" />
                <sec:user name="bob" password="bobspassword" authorities="ROLE_USER" />
            </sec:user-service>
        </sec:authentication-provider>
    </sec:authentication-manager>

    <context:component-scan base-package="myproject" />

</beans:beans>

我错过了什么?

共有1个答案

壤驷升
2023-03-14

除了M.Deinum的评论之外,我还发现我可以将servlet上下文的路径添加到contextConfigLocation:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/root-context.xml /WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</context-param>

这为我解决了问题。

 类似资料:
  • 我在Maven Webapp项目中设置Spring Security性时遇到问题。每当我在服务器上运行应用程序时,它都会显示以下错误: 现在我知道这个问题已经被问到了,我从昨天开始一直在尝试各种各样的解决方案,但都没有结果。 请注意,Spring Security性。xml和spring数据库。xml位于WEB-INF目录中名为spring的文件夹中,而applicationContext。xml

  • 我对spring security有很大的问题。 情况: 网状物。XML: security-config.xml: 错误: 严重:启动筛选器springSecurityFilterChain组织时出现异常。springframework。豆。工厂NoSuchBeanDefinitionException:在组织中未定义名为“springSecurityFilterChain”的bean。spri

  • 问题内容: 我正在从参考资料中学习Spring安全性。发布3.1.2.RELEASE。如前所述,我已经像这样配置了标签 security-context.xml web.xml security-servlet.xml 但是在启动应用程序时出现此异常。如果我删除安全配置,我的Spring Web应用程序可以正常工作。我在stackoverflow中也遇到了同样的问题。但是没有运气。 问题答案: 我

  • 我正在从参考资料中学习spring security。版本3.1.2。释放如中所述,我已经像这样配置了安全性:http security-context.xml web.xml 安全servlet。xml 但我在启动应用程序时遇到了这个异常。如果我删除了安全配置,我的spring web应用程序就会正常工作。我在stackoverflow中也遇到过同样的问题。但运气不好。

  • 问题内容: 我已经用实体管理器配置了两个持久性单元,如下所示: 然后,我将事务管理器配置为 我最初只有一个配置,它被称为“ transactionManager”。Addint一个附加的持久性单元似乎会生成错误。我不明白的一件事,如果我配置了两个持久性单元(每个持久性单元用于一个单独的数据库),是否还需要为每个数据源配置一个单独的实体管理器和一个事务管理器? 我得到的错误如下所示:(我搜索了所有文

  • 问题内容: 我正在使用Spring Security运行NTLM,出现以下错误 org.springframework.beans.factory.NoSuchBeanDefinitionException:未定义名为“ springSecurityFilterChain”的bean 如何解决此错误? 我在web.xml中定义了以下内容 更新1 我解决了这个错误,现在我得到了 org.spring