Maison > Java > javaDidacticiel > Pourquoi mon filtre de sécurité Spring est-il appelé deux fois lors de l'utilisation de @Autowired ?

Pourquoi mon filtre de sécurité Spring est-il appelé deux fois lors de l'utilisation de @Autowired ?

Patricia Arquette
Libérer: 2024-12-13 11:56:10
original
413 Les gens l'ont consulté

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

Invocation de filtre en double dans Spring Security avec @Autowire

Lors d'une tentative d'injection de dépendances dans un filtre via @Autowire dans Spring Security , cela peut entraîner un problème où le filtre est invoqué deux fois. Cela se produit car Spring Boot enregistre automatiquement tout bean filtre auprès du conteneur de servlet.

Pour éviter cette double invocation, il existe deux options :

1. Évitez d'enregistrer le filtre en tant que bean

Cela peut être réalisé en n'exposant pas le filtre en tant que bean et en l'enregistrant uniquement auprès de Spring Security. Cela garantit que Spring Boot n'enregistre pas automatiquement le filtre auprès du conteneur de servlet.

2. Utilisez FilterRegistrationBean

Si le câblage automatique des dépendances dans le filtre est essentiel, alors le filtre doit être un bean. Cependant, Spring Boot doit recevoir explicitement l'instruction de ne pas enregistrer le filtre en tant que filtre. Cela peut être fait à l'aide de FilterRegistrationBean, comme indiqué ci-dessous :

@Bean
public FilterRegistrationBean registration(MyFilter filter) {
    FilterRegistrationBean<MyFilter> registration = new FilterRegistrationBean<>(filter);
    registration.setEnabled(false);
    return registration;
}
Copier après la connexion

Cette approche empêche Spring Boot d'enregistrer le filtre auprès du conteneur de servlet tout en permettant au filtre d'être automatiquement câblé par Spring Security.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal