복붙노트

[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. ==============================

    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. ==============================

    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

  3. from https://stackoverflow.com/questions/25957879/filter-order-in-spring-boot by cc-by-sa and MIT license