每个URL的Spring Security过滤器顺序

时间:2019-05-21 18:59:23

标签: java spring-security filter

我有两个过滤器来处理我的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之后添加过滤器。这使请求被过滤器处理两次!而且不仅一次!

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

阅读this的问题详细信息,这正是您所要求的。读出

  

Spring Security不会在Filter bean上设置订单   创建。这意味着,当Boot创建一个   FilterRegistrationBean为其获取默认顺序为   LOWEST_PRECEDENCE。

     

如果您想在Spring Security之后使用自己的过滤器,则可以   为Spring Security的过滤器创建自己的注册并指定   订单。