当前位置: 首页 > 面试题库 >

收到错误org.springframework.beans.factory.NoSuchBeanDefinitionException:未定义名为“ springSecurityFilterChain”的bean

萧永望
2023-03-14
问题内容

我正在使用Spring Security运行NTLM,出现以下错误

org.springframework.beans.factory.NoSuchBeanDefinitionException:未定义名为“
springSecurityFilterChain”的bean

如何解决此错误?

我在web.xml中定义了以下内容

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

更新1

我解决了这个错误,现在我得到了

org.springframework.beans.factory.NoSuchBeanDefinitionException:未定义名为“
filterSecurityInterceptor”的bean

我有以下

<bean id="springSecurityFilterChain" class="org.acegisecurity.util.FilterChainProxy">
    <property name="filterInvocationDefinitionSource">
    <value>
    CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
    PATTERN_TYPE_APACHE_ANT
    /**=httpSessionContextIntegrationFilter, exceptionTranslationFilter, ntlmFilter, filterSecurityInterceptor
    </value>
    </property>
    </bean>`

我按如下所示更改了applicationContext.xml,因为就像@Sean Patrick
Floyd提到的那样,某些元素已过时,过时并被掩埋。但是我现在有其他错误需要修复:-)

谢谢

<?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:security="http://www.springframework.org/schema/security"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd   http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.2.xsd">
  <!--<authentication-manager alias="_authenticationManager"></authentication-manager>-->
  <security:authentication-provider>
    <security:user-service>
      <security:user name="testuser" password="PASSWORD" authorities="ROLE_USER, ROLE_ADMIN"/>
      <security:user name="administrator" password="PASSWORD" authorities="ROLE_USER,ROLE_ADMIN"/>
    </security:user-service>
  </security:authentication-provider>
  <bean id="userDetailsAuthenticationProvider"
        class="com.icesoft.icefaces.security.UserDetailsAuthenticationProvider">
    <security:custom-authentication-provider/>
  </bean>
  <bean id="ntlmEntryPoint"
        class="org.springframework.security.ui.ntlm.NtlmProcessingFilterEntryPoint">
    <property name="authenticationFailureUrl" value="/accessDenied.jspx"/>
  </bean>
  <bean id="ntlmFilter" class="org.springframework.security.ui.ntlm.NtlmProcessingFilter">
    <security:custom-filter position="NTLM_FILTER"/>
    <property name="stripDomain" value="true"/>
    <property name="defaultDomain" value="domain"/>
    <property name="netbiosWINS" value="domain"/>
    <property name="authenticationManager" ref="_authenticationManager"/>
  </bean>
  <bean id="exceptionTranslationFilter"
        class="org.springframework.security.ui.ExceptionTranslationFilter">
    <property name="authenticationEntryPoint" ref="ntlmEntryPoint"/>
  </bean>
  <security:http access-decision-manager-ref="accessDecisionManager"
                 entry-point-ref="ntlmEntryPoint">
    <security:intercept-url pattern="/accessDenied.jspx" filters="none"/>
    <security:intercept-url pattern="/**" access="ROLE_USER"/>
  </security:http>
  <bean id="accessDecisionManager" class="org.springframework.security.vote.UnanimousBased">
    <property name="allowIfAllAbstainDecisions" value="false"/>
    <property name="decisionVoters">
      <list>
        <bean id="roleVoter" class="org.springframework.security.vote.RoleVoter"/>
      </list>
    </property>
  </bean>
</beans>

问题答案:

DelegatingFilterProxy文档:

请注意,过滤器实际上是DelegatingFilterProxy,而不是实际上将实现过滤器逻辑的类。DelegatingFilterProxy的作用是
将Filter的方法委托给从Spring应用程序上下文获得的bean 。这使Bean可以从Spring
Web应用程序上下文生命周期支持和配置灵活性中受益。 Bean必须实现javax.servlet.Filter,并且必须与filter-
name元素中的名称相同
。阅读Javadoc for DelegatingFilterProxy了解更多信息

您需要定义一个在应用程序上下文springSecurityFilterChain中实现的名为bean javax.servlet.Filter

从“ 安全命名空间配置入门”中:

如果您熟悉框架的命名空间前版本,则可能已经大概猜到这里发生了什么。 <http>元素是负责创建
FilterChainProxy和它使用的过滤器bean
。由于预定义了过滤器位置,不再像过滤器订购不正确这样的常见问题。

因此,您至少需要最小<http>配置



 类似资料:
  • 问题内容: 我正在从参考资料中学习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中也遇到过同样的问题。但运气不好。

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

  • 当它在. xml文件中定义时,一切都很好。现在我已经开始将. xml文件迁移到java配置。Security.xml是我迁移的第一个文件。 安全xml 已迁移SecurityConfig。JAVA 稍后我将配置,因为我需要首先使当前配置正常工作。运行程序后,我得到以下错误。 每当提供的出现问题时,就会发生此错误。我尝试使用其他一些步骤配置AuthenticationProvided,但都不起作用。

  • 我刚刚为一个简单的Spring测试项目配备了基本的身份验证功能。当服务器加载时,我会得到一个众所周知的错误org。springframework。豆子。工厂NoSuchBeanDefinitionException:未定义名为“springSecurityFilterChain”的bean。 <代码>web。xml: servlet上下文。xml包含与安全相关的配置: 我错过了什么?

  • 我得到一个错误,当我试图运行这个简单的脚本: 假设我输入“dude”,我得到的错误是: 我正在运行MacOSX10.9.1,我正在使用安装了Python3.3的PythonLauncher应用程序来运行脚本。