Doppelte Filteraufrufe bei Spring-Bean-Filterregistrierungen
Beim Arbeiten mit Spring Security kann die Registrierung eines Filters als Bean zu unbeabsichtigten Doppelaufrufen führen . Dies geschieht, wenn der Autowiring-Mechanismus von Spring den Filter zweimal registriert: einmal durch den herkömmlichen Bean-Erkennungsprozess und erneut aufgrund der Unterklasse des Filters von Springs GenericFilterBean.
Ursache des Problems:
Der Übeltäter ist die automatische Registrierung von Filtern als Beans durch Spring Boot. Dies soll die Filterkonfiguration vereinfachen, kann jedoch zu Redundanzen führen, wenn Filter explizit definiert und bei Spring Security registriert werden.
Fix:
Um dieses Problem zu beheben, müssen Sie Weisen Sie Spring Boot ausdrücklich an, Ihren Filter nicht als Bean zu registrieren. Dies kann mithilfe der FilterRegistrationBean gemäß der Spring-Dokumentation erreicht werden:
@Bean public FilterRegistrationBean<MyFilter> registration(MyFilter filter) { FilterRegistrationBean<MyFilter> registration = new FilterRegistrationBean<>(filter); registration.setEnabled(false); return registration; }
Indem Sie die Registrierung über setEnabled(false) deaktivieren, verhindern Sie effektiv, dass Spring Boot den Filter automatisch registriert. Ihr Filter wird jedoch aufgrund seiner Registrierung in der Konfigurationsmethode weiterhin von Spring Security erkannt und angewendet.
Das obige ist der detaillierte Inhalt vonWarum werden meine Spring-Sicherheitsfilter zweimal aufgerufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!