Бин с именем «springSecurityFilterChain» не определен
1. Эта проблема
В этой статье обсуждается проблема конфигурации Spring Security - процесс загрузки приложения вызывает следующее исключение:
SEVERE: Exception starting filter springSecurityFilterChain
org.springframework.beans.factory.NoSuchBeanDefinitionException:
No bean named 'springSecurityFilterChain' is defined
Дальнейшее чтение:
Введение в Java Config для Spring Security
Краткое и практическое руководство по Java Config для Spring Security
Spring Security 5 - OAuth2 Войти
Узнайте, как аутентифицировать пользователей с помощью Facebook, Google или других учетных данных с помощью OAuth2 в Spring Security 5.
Поддержка Servlet 3 Async с Spring MVC и Spring Security
Краткое введение в поддержку Spring Security для асинхронных запросов в Spring MVC.
2. Причина
Причина этого исключения проста - Spring Security ищет компонент с именемspringSecurityFilterChain (по умолчанию) и не может его найти. Этот bean-компонент требуется для основногоSpring Security Filter -DelegatingFilterProxy - определенного вweb.xml:
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
Это просто прокси, который делегирует всю свою логику bean-компонентуspringSecurityFilterChain.
3. Решение
Самая распространенная причина, по которой этот компонент отсутствует в контексте, заключается в том, что в конфигурации безопасности XML определенno <http> element:
Если конфигурация XML использует пространство имен безопасности - как в приведенном выше примере, то объявлениеa simple <http> element гарантирует, что bean-компонент фильтра создан и все запустится правильно:
Другая возможная причина заключается в том, чтоthe security configuration is not imported at all в общем контексте веб-приложения.
Если файл конфигурации XML безопасности называетсяspringSecurityConfig.xml, убедитесь, чтоthe resource is imported:
@ImportResource({"classpath:springSecurityConfig.xml"})
Или в XML:
Наконец, имя по умолчанию для компонента фильтра можно изменить вweb.xml - обычно для использования существующего фильтра с Spring Security:
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
targetBeanName
customFilter
4. Заключение
В этой статье обсуждается очень специфическая проблема Spring Security - отсутствующий компонент цепочки фильтров - и показаны решения этой распространенной проблемы.