Ingen bønner med navnet 'springSecurityFilterChain' er defineret
1. Problemet
Denne artikel diskuterer et Spring Security-konfigurationsproblem - applikationen bootstrapping-proces kaster følgende undtagelse:
SVERE: Undtagelse startende filter springSecurityFilterChain org.springframework.beans.factory.NoSuchBeanDefinitionException: Ingen bønne med navnet 'springSecurityFilterChain' er defineret
2. Årsagen
Årsagen til denne undtagelse er ligetil - Spring Security ser efter en bønne, der hedder springSecurityFilterChain (som standard) og kan ikke finde den. Denne bønne kræves af hovedmanden Forårs sikkerhedsfilter - det DelegeringFilterProxy - defineret i web.xml:
springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChain / *
Dette er bare en proxy, der delegerer al sin logik til springSecurityFilterChain bønne.
3. Løsningen
Den mest almindelige årsag til, at denne bønne mangler i sammenhængen, er at XML-sikkerhedskonfigurationen har ingen element defineret:
Hvis XML-konfigurationen bruger sikkerhedsnavneområdet - som eksemplet ovenfor, erklæres derefter et simpelt element vil sikre, at filterbønnen oprettes, og at alt starter korrekt:
En anden mulig årsag er, at sikkerhedskonfigurationen er slet ikke importeret ind i den generelle kontekst af webapplikationen.
Hvis sikkerheds-XML-konfigurationsfilen er navngivet springSecurityConfig.xml, sørge for at ressourcen importeres:
@ImportResource ({"classpath: springSecurityConfig.xml"})
Eller i XML:
Endelig kan filterbønnens standardnavn ændres i web.xml - normalt for at bruge et eksisterende filter med Spring Security:
springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy targetBeanName customFilter
4. Konklusion
Denne artikel diskuterer et meget specifikt Spring Security-problem - den manglende filterkædebønne - og viser løsningerne på dette fælles problem.