[SPRING] 스프링 부트의 필터 순서
SPRING스프링 부트의 필터 순서
스프링 부트에서 내 필터의 순서를 어떻게 지정합니까? 스프링 보안 필터 후에 MDC 필터를 삽입해야합니다. 거의 모든 것을 시도했지만 필터가 항상 처음이었습니다. 이것은 작동하지 않았다 :
@Bean
@Order(Ordered.LOWEST_PRECEDENCE)
public UserInsertingMdcFilter userInsertingMdcFilter() {
return new UserInsertingMdcFilter();
}
이것은 역시 효과가 없었습니다.
@Bean
public FilterRegistrationBean userInsertingMdcFilterRegistrationBean() {
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
UserInsertingMdcFilter userFilter = new UserInsertingMdcFilter();
registrationBean.setFilter(userFilter);
registrationBean.setOrder(Integer.MAX_VALUE);
return registrationBean;
}
해결법
-
==============================
1.봄의 사람들이 다시 도움이되었습니다. https://github.com/spring-projects/spring-boot/issues/1640 및 https://jira.spring.io/browse/SEC-2730을 참조하십시오.
봄의 사람들이 다시 도움이되었습니다. https://github.com/spring-projects/spring-boot/issues/1640 및 https://jira.spring.io/browse/SEC-2730을 참조하십시오.
그래서 내 질문에 대한 대답은 :
@Bean public FilterRegistrationBean securityFilterChain(@Qualifier(AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME) Filter securityFilter) { FilterRegistrationBean registration = new FilterRegistrationBean(securityFilter); registration.setOrder(Integer.MAX_VALUE - 1); registration.setName(AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME); return registration; } @Bean public FilterRegistrationBean userInsertingMdcFilterRegistrationBean() { FilterRegistrationBean registrationBean = new FilterRegistrationBean(); UserInsertingMdcFilter userFilter = new UserInsertingMdcFilter(); registrationBean.setFilter(userFilter); registrationBean.setOrder(Integer.MAX_VALUE); return registrationBean; }
-
==============================
2.이 문제는 Spring Boot 1.2에서 수정되었습니다. 보안 체인의 기본값은 0입니다.
이 문제는 Spring Boot 1.2에서 수정되었습니다. 보안 체인의 기본값은 0입니다.
속성을 통해 설정할 수도 있습니다.
security.filter-order=0 # Security filter chain order.
https://github.com/spring-projects/spring-boot/issues/1640
from https://stackoverflow.com/questions/25957879/filter-order-in-spring-boot by cc-by-sa and MIT license