Heim >Java >javaLernprogramm >Warum ruft mein Spring-Sicherheitsfilter bei Verwendung von @Autowired zweimal auf?
Doppelter Filteraufruf in Spring Security mit @Autowire
Wenn versucht wird, Abhängigkeiten über @Autowire in Spring Security in einen Filter einzufügen , kann es zu einem Problem kommen, bei dem der Filter zweimal aufgerufen wird. Dies geschieht, weil Spring Boot jedes Filter-Bean automatisch beim Servlet-Container registriert.
Um diesen doppelten Aufruf zu verhindern, gibt es zwei Optionen:
1. Vermeiden Sie die Registrierung des Filters als Bean
Dies kann erreicht werden, indem Sie den Filter nicht als Bean offenlegen und ihn nur bei Spring Security registrieren. Dadurch wird sichergestellt, dass Spring Boot den Filter nicht automatisch beim Servlet-Container registriert.
2. Verwenden Sie FilterRegistrationBean
Wenn die automatische Verknüpfung von Abhängigkeiten im Filter unbedingt erforderlich ist, muss der Filter eine Bean sein. Allerdings muss Spring Boot explizit angewiesen werden, den Filter nicht als Filter zu registrieren. Dies kann mit FilterRegistrationBean erfolgen, wie unten gezeigt:
@Bean public FilterRegistrationBean registration(MyFilter filter) { FilterRegistrationBean<MyFilter> registration = new FilterRegistrationBean<>(filter); registration.setEnabled(false); return registration; }
Dieser Ansatz verhindert, dass Spring Boot den Filter beim Servlet-Container registriert, ermöglicht aber dennoch die automatische Verdrahtung des Filters durch Spring Security.
Das obige ist der detaillierte Inhalt vonWarum ruft mein Spring-Sicherheitsfilter bei Verwendung von @Autowired zweimal auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!