Es ist keine Bean mit dem Namen 'springSecurityFilterChain' definiert

1. Das Problem

In diesem Artikel wird ein Konfigurationsproblem von Spring Security erläutert - der Bootstrapping-Prozess der Anwendung löst die folgende Ausnahme aus:

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

2. Die Ursache

Die Ursache für diese Ausnahme ist unkompliziert: Spring Security sucht (standardmäßig) nach einer Bean mit dem Namen springSecurityFilterChain und kann sie nicht finden. Diese Bean wird vom Haupt- Spring-Sicherheitsfilter - dem DelegatingFilterProxy - benötigt, der in der Datei web.xml definiert ist :

 springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy   springSecurityFilterChain /* 

Dies ist nur ein Proxy, der seine gesamte Logik an die springSecurityFilterChain- Bean delegiert .

3. Die Lösung

Der häufigste Grund, warum diese Bean im Kontext fehlt, ist, dass die Sicherheits-XML-Konfiguration keine hatElement definiert:

Wenn die XML-Konfiguration den Sicherheits-Namespace verwendet - wie im obigen Beispiel - wird durch Deklarieren eines einfachen Elements sichergestellt, dass die Filter-Bean erstellt wird und alles ordnungsgemäß gestartet wird:

Ein weiterer möglicher Grund ist, dass die Sicherheitskonfiguration überhaupt nicht in den Gesamtkontext der Webanwendung importiert wird .

Wenn die Sicherheits-XML-Konfigurationsdatei springSecurityConfig.xml heißt , stellen Sie sicher, dass die Ressource importiert wird :

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

Oder in XML:

Schließlich kann der Standardname der Filter-Bean in der Datei web.xml geändert werden - normalerweise, um einen vorhandenen Filter mit Spring Security zu verwenden:

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

4. Fazit

Dieser Artikel beschreibt ein sehr spezifisches Spring Security-Problem - die fehlende Filter Chain Bean - und zeigt die Lösungen für dieses häufig auftretende Problem.