我有两个过滤器来处理我的httpRequest并添加头和数据。
我想以特定的执行顺序应用过滤器。所以我试过:
@Component
@Order(1)
public class FirstFilter implements Filter { //**** }
@Component
@Order(2)
public class SecondFilter implements Filter { //**** }
这个很好用。但是,我只想将此顺序应用于以(/API)开头的请求,而不是所有请求。.所以@Order注解没有做我想做的事情。.
我试过了
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/api/**")
.addFilterAfter(new FirstFilter (), ChannelProcessingFilter.class)
.addFilterAfter(new SecondtFilter (), FirstFilter .class)
这也可以,但是我不喜欢在ChannelProcessingFilter之后添加我的过滤器。.这使得请求被我的过滤器处理两次!而且不止一次!
你知道吗?
2条答案
按热度按时间hm2xizp91#
阅读this问题的详细信息,这正是您所要求的。它读出
Spring Security不会在它创建的Filterbean上设置顺序。这意味着,当 Boot 为它创建FilterRegistrationBean时,它会得到默认的顺序,即LOWEST_PRECEDENCE。
如果你想让你自己的Filter跟随Spring Security的Filter,你可以为Spring Security的Filter创建你自己的注册并指定顺序。
cs7cruho2#
您必须在筛选器中覆盖此方法: