1. El problema
Este artículo analiza un problema de configuración de Spring Security: el proceso de arranque de la aplicación genera la siguiente excepción:
SEVERE: Exception starting filter springSecurityFilterChain org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'springSecurityFilterChain' is defined
2. La causa
La causa de esta excepción es sencilla: Spring Security busca un bean llamado springSecurityFilterChain (por defecto) y no puede encontrarlo. Este bean es requerido por el filtro de seguridad principal de Spring , el DelegatingFilterProxy , definido en web.xml :
springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChain /*
Este es solo un proxy que delega toda su lógica al bean springSecurityFilterChain .
3. La solución
La razón más común por la que este bean falta en el contexto es que la configuración XML de seguridad no tieneelemento definido:
Si la configuración XML utiliza el espacio de nombres de seguridad, como en el ejemplo anterior, declarar un elemento simple garantizará que se cree el bean de filtro y que todo se inicie correctamente:
Otra posible razón es que la configuración de seguridad no se importa en absoluto al contexto general de la aplicación web.
Si el archivo de configuración XML de seguridad se llama springSecurityConfig.xml , asegúrese de que se importe el recurso :
@ImportResource({"classpath:springSecurityConfig.xml"})
O en XML:
Finalmente, el nombre predeterminado del bean de filtro se puede cambiar en web.xml , generalmente para usar un filtro existente con Spring Security:
springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy targetBeanName customFilter
4. Conclusión
Este artículo analiza un problema de Spring Security muy específico, el bean de cadena de filtro que falta, y muestra las soluciones a este problema común.