34 votes

Obtention d'erreur org.springframework.beans.factory.NoSuchBeanDefinitionException: aucun bean nommé 'springSecurityFilterChain' n'est défini

Je suis en cours d'exécution NTLM à l'aide de la Sécurité Printemps, j'obtiens l'erreur suivante

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'springSecurityFilterChain' is defined

Comment puis-je résoudre ce problème?

J'ai suivantes définies dans 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>

Mise à jour 1

J'ai résolu cette erreur, maintenant je reçois org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'filterSecurityInterceptor' is defined et j'ai le texte suivant

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

J'ai changé mon applicationContext.xml comme suit parce que, comme @Sean Patrick Floyd mentionné certains éléments étaient vieux et de la mort et enterré. Cependant j'ai d'autres erreurs maintenant, ce qui doit être corrigé :-)

Merci

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

41voto

Sean Patrick Floyd Points 109428

De la DelegatingFilterProxy docs:

Notez que le filtre est en fait un DelegatingFilterProxy, et pas le la classe qui va effectivement mettre en œuvre l' la logique du filtre. Ce DelegatingFilterProxy n'est délégué le Filtre de méthodes grâce à un haricot qui est obtenu à partir du Printemps le contexte de l'application. Cela permet à l' de la fève à la prestation de la source web le contexte de l'application de soutien du cycle de et la flexibilité de configuration. L' bean doit mettre en œuvre javax.servlet.Filtre et il doit avoir le même nom que dans le filtre-nom de l'élément. Lire la Javadoc pour DelegatingFilterProxy pour plus d' informations

Vous avez besoin de définir un bean nommé springSecurityFilterChain qui implémente javax.servlet.Filter dans votre contexte de l'application.

De mise en route avec la Sécurité de l'espace de Noms de Configuration:

Si vous êtes familier avec pré-espace de noms les versions du framework, vous pouvez probablement déjà deviner à peu près ce qu' se passe ici. L' <http> élément est responsable de la création d'un FilterChainProxy et le filtre haricots qu'il utilise. Problèmes communs comme filtre incorrect de la commande ne sont plus un problème que le filtre les positions sont prédéfinis.

Si vous avez besoin d'au moins Un Minimum <http> Configuration

6voto

Christian Nilsson Points 229

Sean Patrick Floyd a absolument raison, mais je pense qu'il vaut la peine de mentionner une solution, qui m'a pris beaucoup de temps.

Vous ajoutez simplement l'annotation @ImportResource.

 @Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"org.company"})
@ImportResource({"classpath:security.xml"})
public class CompanyWebMvcConfiguration extends WebMvcConfigurerAdapter {
}
 

security.xml:

 <?xml version="1.0" encoding="UTF-8"?>
<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.2.xsd
    http://www.springframework.org/schema/security
    http://www.springframework.org/schema/security/spring-security-3.1.xsd">


    <http use-expressions="true">
        <access-denied-handler error-page="/error"/>
    </http>
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X