Spring Security调试过滤器之前如何订购自定义过滤器

时间:2018-07-19 15:06:58

标签: spring-boot spring-security

@EnableWebSecurity
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.debug(true);
    }
}

启用spring security调试后,它将注册spring security DebugFilter.java

我有一个自定义过滤器,我想在spring security DebugFilter之前订购。对我而言,最先在调试过滤器之前调用过滤器的方法是什么?

我的自定义过滤器已经在spring安全过滤器链之前订购了,但是在spring security调试过滤器之前没有被调用。

enter image description here

1 个答案:

答案 0 :(得分:0)

虽然不清楚如何指定自定义过滤器的顺序,但我假设您正在使用Springboot并使用 FilterRegistrationBean 来设置自定义过滤器并通过调用setOrder来设置顺序。以下答案基于该假设,如果您也以其他方式设置订单,则可能适用。

如果您查看 WebSecurityConfigurerAdapter 的源代码,则应用的顺序为100。

@Order(100)
public abstract class WebSecurityConfigurerAdapter implements
        WebSecurityConfigurer<WebSecurity> {

因此,如果要为自定义过滤器设置最高优先级,请使用 FilterRegistrationBean.setOrder 方法添加以下优先级。使用FilterRegistrationBean.HIGHEST_PRECEDENCE设置最高顺序。

filterRegBean.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE);