Nenhum Bean chamado 'springSecurityFilterChain' está definido

Nenhum Bean chamado 'springSecurityFilterChain' está definido

1. O problema

Este artigo discute um problema de configuração do Spring Security - o processo de inicialização do aplicativo lançando a seguinte exceção:

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

Leitura adicional:

Introdução ao Java Config para Spring Security

Um guia rápido e prático para o Java Config for Spring Security

Read more

Spring Security 5 - Login do OAuth2

Aprenda como autenticar usuários com o Facebook, Google ou outras credenciais usando o OAuth2 no Spring Security 5.

Read more

Suporte assíncrono do Servlet 3 com Spring MVC e Spring Security

Introdução rápida ao suporte do Spring Security para solicitações assíncronas no Spring MVC.

Read more

2. A causa

A causa desta exceção é direta - Spring Security procura por um bean chamadospringSecurityFilterChain (por padrão), e não consegue encontrá-lo. Este bean é exigido peloSpring Security Filter principal - oDelegatingFilterProxy - definido noweb.xml:


    springSecurityFilterChain
    org.springframework.web.filter.DelegatingFilterProxy


    springSecurityFilterChain
    /*

Este é apenas um proxy que delega toda a sua lógica ao beanspringSecurityFilterChain.

3. A solução

A razão mais comum pela qual esse bean está ausente do contexto é que a configuração XML de segurança temno <http> element definido:




Se a configuração XML estiver usando o namespace de segurança - como no exemplo acima, declarara simple <http> element garantirá que o bean de filtro seja criado e tudo inicialize corretamente:


    

Outra razão possível é quethe security configuration is not imported at all no contexto geral do aplicativo da web.

Se o arquivo de configuração XML de segurança for denominadospringSecurityConfig.xml, certifique-se dethe resource is imported:

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

Ou em XML:

Finalmente, o nome padrão do bean de filtro pode ser alterado noweb.xml - normalmente para usar um filtro existente com Spring Security:


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

4. Conclusão

Este artigo discute um problema muito específico do Spring Security - o bean de cadeia de filtro ausente - e mostra as soluções para esse problema comum.