Aucun haricot nommé "springSecurityFilterChain" est défini

Aucun haricot nommé "springSecurityFilterChain" est défini

1. Le problème

Cet article décrit un problème de configuration de Spring Security: le processus d’amorçage d’application lançant l’exception suivante:

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

Lectures complémentaires:

Introduction à Java Config pour Spring Security

Guide rapide et pratique de Java Config pour Spring Security

Read more

Spring Security 5 - Connexion à OAuth2

Apprenez à authentifier les utilisateurs avec Facebook, Google ou d'autres informations d'identification à l'aide de OAuth2 dans Spring Security 5.

Read more

Prise en charge asynchrone de Servlet 3 avec Spring MVC et Spring Security

Introduction rapide à la prise en charge de Spring Security pour les demandes asynchrones dans Spring MVC.

Read more

2. La cause

La cause de cette exception est simple - Spring Security recherche un bean nomméspringSecurityFilterChain (par défaut) et ne peut pas le trouver. Ce bean est requis par lesSpring Security Filter principaux - lesDelegatingFilterProxy - définis dans lesweb.xml:


    springSecurityFilterChain
    org.springframework.web.filter.DelegatingFilterProxy


    springSecurityFilterChain
    /*

Ceci est juste un proxy qui délègue toute sa logique au beanspringSecurityFilterChain.

3. La solution

La raison la plus courante pour laquelle ce bean est absent du contexte est que la configuration XML de sécurité ano <http> element défini:




Si la configuration XML utilise l'espace de noms de sécurité - comme dans l'exemple ci-dessus, déclarera simple <http> element garantira que le bean filtre est créé et que tout démarre correctement:


    

Une autre raison possible est quethe security configuration is not imported at all dans le contexte global de l'application Web.

Si le fichier de configuration XML de sécurité est nomméspringSecurityConfig.xml, assurez-vous quethe resource is imported:

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

Ou en XML:

Enfin, le nom par défaut du bean filtre peut être modifié dans leweb.xml - généralement pour utiliser un filtre existant avec Spring Security:


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

4. Conclusion

Cet article décrit un problème très spécifique de Spring Security - le bean de chaîne de filtre manquant - et présente les solutions à ce problème courant.