Я использую Spring Boot 2.0.4.RELEASE, и у меня есть два фильтра ( java.servlet.Filter ) RequestHeaderParseFilter
и RequestLogFilter
.RequestHeaderParseFilter
извлекает и устанавливает значения из заголовка запроса.И RequestLogFilter
регистрирует их.Я зарегистрировал их, используя FilterRegistrationBean
@Bean
public FilterRegistrationBean requestHeaderParseFilter () {
FilterRegistrationBean registration = new FilterRegistrationBean();
Filter requestHeaderParseFilter = new RequestHeaderParseFilter();
this.beanFactory.autowireBean(requestHeaderParseFilter);
registration.setFilter(requestHeaderParseFilter);
registration.addUrlPatterns("/*");
return registration;
}
@Bean
public FilterRegistrationBean requestLogFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
Filter requestLogFilter = new RequestLogFilter();
this.beanFactory.autowireBean(requestLogFilter);
registration.setFilter(requestLogFilter);
registration.addUrlPatterns("/rest/*");
return registration;
}
Я хочу заказать RequestLogFilter
после RequestHeaderParseFilter
в цепочке фильтров.Но я не хочу использовать RegistrationBean.setOrder(int)
.В этой ситуации у меня есть следующие варианты и вопросы:
Я пытался использовать addFilterAfter
, доступный в цепочке фильтров Spring Security, как показано ниже
@Inject
@Qualifier("requestLogFilter")
private FilterRegistrationBean<Filter> filterRegistrationBean;
.addFilterAfter(this.filterRegistrationBean.getFilter(), RequestHeaderParseFilter.class);
Во-первых, это выбрасываетошибка Error creating bean with name 'springSecurityFilterChain'. Cannot register after unregistered Filter class
.Это означает, что RequestHeaderParseFilter
не было зарегистрировано в цепочке фильтров безопасности.
Q1. Нужно ли явно регистрировать мои фильтры в цепочке фильтров Spring Security?
Даже если это работает, добавлять эти фильтры в цепочку фильтров Spring Security не очень удобно, так как им нечегоделать с безопасностью.
Не регистрируйте эти фильтры как фильтры Spring Security, а скорее как часть некоторой общей цепочки фильтров.
Q2. Помимо цепочки фильтров Spring Security.Есть ли в Spring другие цепочки фильтров?
Q3. Могу ли я в любом случае использовать что-то вроде addFilterAfter
для заказа своих фильтров без использования цепочки фильтров Spring Security?