Comment appliquer le printemps de démarrage du filtre basé sur le modèle d'URL?
J'ai créé un ressort de démarrage filtre - met en œuvre GenericFilterBean
avec @Component
annotation.
@Component
public class MyAuthenticationFilter extends GenericFilterBean {
...
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
...
}
}
Le filtre est automatiquement identifié par le Printemps de Démarrage Cadre et fonctionne très bien pour tous de l'API REST. Je veux que ce filtre s'applique uniquement sur un certain chemin d'accès d'URL, comme /api/secure/*
mais je ne peux pas trouver le bon chemin.
J'ai essayé @WebFilter
mais il ne fonctionne pas.
Je ne suis pas à l'aide de XML ou de configuration de la servlet initialiseur - seulement les annotations.
Quelle serait la bonne façon de le faire fonctionner?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez ajouter un filtre comme ceci:
Il y a une autre option, si vous êtes en mesure d'étendre
OncePerRequestFilter
. Par exemple:@user1283002 je pense que c'est possible de le faire à l'aide de @WebFilter. Je viens de tombé sur ce l'article. Conformément à l'article (n'ai pas essayé moi-même):
EDIT:
Après une nouvelle lecture de la documentation pour la @ServletComponentScan je suis tombé sur une intéressante avertissement
Ce qui signifie que lors du déploiement de notre application dans un conteneur web (ex: Apache, Tomcat), cette classe n'obtiendrez pas analysés par le framework Spring et par conséquent, le printemps config sur elle (le cas échéant) ne sera pas appliqué.
Si il n'y a pas de Ressort config être fait, vous êtes bon pour aller, sans plus de changements, si ce n'est juste d'ajouter le @Composante numérisation vers le filtre et assurez-vous qu'il est dans le chemin de votre @ComponentScan annotation.