Heim >Java >javaLernprogramm >Warum ruft mein Spring-Sicherheitsfilter bei Verwendung von @Autowired zweimal auf?

Warum ruft mein Spring-Sicherheitsfilter bei Verwendung von @Autowired zweimal auf?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-13 11:56:10411Durchsuche

Why is My Spring Security Filter Invoking Twice When Using @Autowired?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn