La commande d'un filtre au printemps-boot
Comment puis-je spécifier l'ordre de mon Filtre au printemps-boot? J'ai besoin d'insérer mon MDC filtre après le Printemps de filtre de Sécurité. J'ai essayé presque tout, mais mon filtre était toujours le premier. Cela n'a pas fonctionné:
@Bean
@Order(Ordered.LOWEST_PRECEDENCE)
public UserInsertingMdcFilter userInsertingMdcFilter() {
return new UserInsertingMdcFilter();
}
Cela ne fonctionne pas trop:
@Bean
public FilterRegistrationBean userInsertingMdcFilterRegistrationBean() {
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
UserInsertingMdcFilter userFilter = new UserInsertingMdcFilter();
registrationBean.setFilter(userFilter);
registrationBean.setOrder(Integer.MAX_VALUE);
return registrationBean;
}
@Order(Ordered.LOWEST_PRECEDENCE + 100)
ne fonctionnera pas carOrdered.LOWEST_PRECEDENCE = Integer.Max
et Entier.Max + 100 = certains nombre négatif, ce serait une très haute priorité- J'ai aussi essayé de l'événement
@Order(Ordered.LOWEST_PRECEDENCE)
, sans succès. - Quelle est la version de Printemps de Démarrage? Avez-vous essayé 1.1.7?
- J'ai essayé, pas de différence
- Double Possible de Comment définir le filtre de Servlet ordre d'exécution au Printemps de Démarrage de l'application
Vous devez vous connecter pour publier un commentaire.
Gars de Printemps aidés à nouveau. Voir https://github.com/spring-projects/spring-boot/issues/1640 et https://jira.spring.io/browse/SEC-2730
Donc la réponse à ma question est:
HIGHEST_PRECEDENCE = -2147483648
etLOWEST_PRECEDENCE = 2147483647
je suppose que la plus faible priorité irait-elle la dernière? Tout irait pour le avant?Cela a été fixée au Printemps de Démarrage 1.2. La chaîne de sécurité par défaut est maintenant à l'ordre
0
.Il peut également être défini par les propriétés:
https://github.com/spring-projects/spring-boot/issues/1640
SecurityProperties.DEFAULT_FILTER_ORDER
et estFilterRegistrationBean.REQUEST_WRAPPER_FILTER_MAX_ORDER - 100
ou tout simplement-100
.spring.security.filter.order=-100