我有两个过滤器来处理我的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之后添加我的过滤器。这使得我的过滤器要处理两次请求!而且不止一次!
有什么想法吗?
发布于 2019-05-22 03:20:10
阅读this问题详细信息,这正是您要问的问题。它的读数
Spring Security不会在它创建的Filter bean上设置顺序。这意味着,当Boot为它创建FilterRegistrationBean时,它会获得默认顺序,即LOWEST_PRECEDENCE。
如果你想让你自己的过滤器在Spring Security之后,你可以为Spring Security的过滤器创建你自己的注册并指定顺序。
https://stackoverflow.com/questions/56244830
复制相似问题