No Bean Named ‘springSecurityFilterChain’ er definert

1. Problemet

Denne artikkelen diskuterer et Spring Security-konfigurasjonsproblem - applikasjonsoppstartprosessen som kaster følgende unntak:

ALVOR: Unntak som starter filterfjærSecurityFilterChain org.springframework.beans.factory.NoSuchBeanDefinitionException: Ingen bønne med navnet 'springSecurityFilterChain' er definert

2. Årsaken

Årsaken til dette unntaket er grei - Spring Security ser etter en bønne som heter springSecurityFilterChain (som standard), og finner den ikke. Denne bønnen kreves av hovedmannen Vårens sikkerhetsfilter - den DelegeringFilterProxy - definert i web.xml:

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

Dette er bare en fullmektig som delegerer all sin logikk til springSecurityFilterChain bønne.

3. Løsningen

Den vanligste årsaken til at denne bønnen mangler i sammenhengen, er at XML-sikkerhetskonfigurasjonen har Nei element definert:

Hvis XML-konfigurasjonen bruker sikkerhetsnavnområdet - som eksemplet ovenfor, så erklærer du et enkelt element vil sikre at filterbønnen blir opprettet og at alt starter riktig:

En annen mulig årsak er at sikkerhetskonfigurasjonen er ikke importert i det hele tatt inn i den generelle konteksten til webapplikasjonen.

Hvis sikkerhets-XML-konfigurasjonsfilen er navngitt springSecurityConfig.xml, forsikre ressursen er importert:

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

Eller i XML:

Til slutt kan standardnavnet på filterbønnen endres i web.xml - vanligvis for å bruke et eksisterende filter med Spring Security:

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

4. Konklusjon

Denne artikkelen diskuterer et veldig spesifikt Spring Security-problem - den manglende filterkjedebønnen - og viser løsningene på dette vanlige problemet.


$config[zx-auto] not found$config[zx-overlay] not found