Ich möchte @Autowire
mit einem Filter
verwenden. So definiere ich meine Filter im SecurityConfig
wie folgt:Filter zweimal aufrufen, wenn als Spring-Bean registrieren
@Override
protected void configure(HttpSecurity http) throws Exception {
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
http.addFilterBefore(getA(), BasicAuthenticationFilter.class);
http.csrf().disable();
}
@Bean
public A getA(){
return new A();
}
Dieser Filter A
Spring erstreckt GenericFilterBean
.
Ich bekomme unter Ausgang, wenn ich den Controller aufrufen, der zeigt, dass der Filter zweimal trifft.
filter A before
filter A before
mycontroller invoke
filter A after
filter A after
Meine Beobachtung ist, diese zusätzliche Aufruf mit Federbehälter aufrufen, weil, wenn Filter nicht als bean registrieren, es nur einmal Treffer erhalten. Was ist der Grund und wie kann ich es beheben?
Ein Aufruf durch den Servlet-Container ist und das andere ist von Spring Security –
Es für Spring Security keine separaten Behälter, aber es hat seine eigene Kette von Filtern, die verwendet werden, zu entscheiden, ob eine Anfrage erlaubt sein soll oder nicht. –
Code funktioniert für mich. Was ist der Grund für die doppelte Registrierung? –