Nincs meghatározva a „springSecurityFilterChain” nevű bab
1. A probléma
Ez a cikk egy tavaszi biztonsági konfigurációs problémát tárgyal - az alkalmazás indítási folyamatát, amely a következő kivételt eredményezi:
SEVERE: Kivétel kezdő szűrő springSecurityFilterChain org.springframework.beans.factory.NoSuchBeanDefinitionException: Nincs meghatározva a „springSecurityFilterChain” nevű bab
2. Az ok
Ennek a kivételnek az oka egyértelmű - a Spring Security egy babot keres springSecurityFilterChain (alapértelmezés szerint), és nem találja meg. Ezt a babot a fő megköveteli Tavaszi biztonsági szűrő - a DelegatingFilterProxy - a web.xml:
springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChain / *
Ez csak egy proxy, amely minden logikáját átruházza a springSecurityFilterChain bab.
3. A megoldás
Ennek a babnak a hiánya a kontextusból a leggyakoribb oka az, hogy a biztonsági XML konfiguráció rendelkezik nem elem meghatározott:
Ha az XML konfiguráció a biztonsági névteret használja - a fenti példaként, akkor deklarálja egyszerű elem biztosítja, hogy a szűrőbab létrejöjjön, és minden megfelelően induljon:
Egy másik lehetséges ok az a biztonsági konfigurációt egyáltalán nem importálják a webes alkalmazás általános kontextusába.
Ha a biztonsági XML konfigurációs fájl neve van springSecurityConfig.xml, győződjön meg róla az erőforrás importálva van:
@ImportResource ({"classpath: springSecurityConfig.xml"})
Vagy XML-ben:
Végül a szűrőbab alapértelmezett neve megváltoztatható a web.xml - általában egy meglévő, rugós biztonsági szűrő használata:
springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy targetBeanName customFilter
4. Következtetés
Ez a cikk egy nagyon specifikus Spring Security problémát - a hiányzó szűrőlánc-babot - tárgyal, és bemutatja ennek a gyakori kérdésnek a megoldásait.