Рубрики
Без рубрики

Ни один Компонент С именем “springsecurityfilterchain” не определен

Ни один компонент с именем “springsecurityfilterchain” не определен – проблема, причины и решения.

Автор оригинала: Eugen Paraschiv.

1. Проблема

В этой статье рассматривается проблема конфигурации безопасности Spring – процесс начальной загрузки приложения, вызывающий следующее исключение:

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

Дальнейшее чтение:

Введение в Java Config для безопасности Spring

Spring Security 5 – Вход в систему OAuth2

Поддержка асинхронности сервлета 3 с Spring MVC и Spring Security

2. Причина

Причина этого исключения проста – Spring Security ищет компонент с именем springSecurityFilterChain (по умолчанию) и не может его найти. Этот компонент требуется основным фильтром безопасности SpringDelegatingFilterProxy – определен в web.xml :


    springSecurityFilterChain
    org.springframework.web.filter.DelegatingFilterProxy


    springSecurityFilterChain
    /*

Это просто прокси-сервер, который делегирует всю свою логику springSecurityFilterChain bean.

3. Решение

Наиболее распространенная причина, по которой этот компонент отсутствует в контексте, заключается в том, что в конфигурации XML безопасности определен no элемент :




Если конфигурация XML использует пространство имен безопасности – как в приведенном выше примере, то объявление простого элемента гарантирует, что компонент фильтра будет создан и все запустится правильно:


    

Другая возможная причина заключается в том, что конфигурация безопасности вообще не импортируется в общий контекст веб-приложения.

Если файл конфигурации XML безопасности имеет имя springSecurityConfig.xml , убедитесь, что ресурс импортирован :

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

Или в XML:

Наконец, имя компонента фильтра по умолчанию может быть изменено в web.xml – обычно для использования существующего фильтра с защитой пружины:


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

4. Заключение

В этой статье обсуждается очень специфическая проблема безопасности Spring – отсутствующий компонент цепочки фильтров – и показаны решения этой распространенной проблемы.