Invocations de filtres doubles dans les enregistrements de filtres Spring Bean
Lorsque vous travaillez avec Spring Security, l'enregistrement d'un filtre en tant que bean peut entraîner des doubles invocations involontaires . Cela se produit lorsque le mécanisme de câblage automatique de Spring enregistre le filtre deux fois : une fois via le processus de découverte de bean conventionnel et une autre fois en raison de la sous-classe du filtre du GenericFilterBean de Spring.
Cause du problème :
Le coupable est l'enregistrement automatique des filtres en tant que beans par Spring Boot. Ceci est destiné à simplifier la configuration des filtres, mais peut entraîner des redondances lorsque les filtres sont explicitement définis et enregistrés auprès de Spring Security.
Correction :
Pour résoudre ce problème, vous devez informez explicitement Spring Boot de ne pas enregistrer votre filtre en tant que bean. Ceci peut être réalisé en utilisant FilterRegistrationBean, selon la documentation Spring :
@Bean public FilterRegistrationBean<MyFilter> registration(MyFilter filter) { FilterRegistrationBean<MyFilter> registration = new FilterRegistrationBean<>(filter); registration.setEnabled(false); return registration; }
En désactivant l'enregistrement via setEnabled(false), vous empêchez efficacement Spring Boot d'enregistrer automatiquement le filtre. Cependant, votre filtre sera toujours reconnu et appliqué par Spring Security en raison de son enregistrement dans la méthode de configuration.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!