我有自定义身份验证筛选器,PreAuthenticatedAuthenticationToken它可以在安全上下文中创建和存储它。这一切都很好。这是配置:
PreAuthenticatedAuthenticationToken
@Configuration @EnableWebMvcSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private SsoAuthenticationProvider authenticationProvider; @Autowired private SsoAuthenticationFilter ssoAuthenticationFilter; @Override protected void configure(HttpSecurity http) throws Exception { http.addFilterAfter(ssoAuthenticationFilter, SecurityContextPersistenceFilter.class); } }
现在,我ssoAuthenticationFilter是的一部分FilterChainProxy,位于正确的位置。光滑。
ssoAuthenticationFilter
FilterChainProxy
但由于ssoAuthenticationFilter是Filter它得到通过引导拾起并作为过滤器。所以我的过滤器链看起来真的像:
Filter
http.addFilterAfter(...)
显然,我想摆脱ssoAuthenticationFilter这里的自动注册(列出的第一个)。
任何提示,不胜感激。
2个选择:
添加一个FilterRegistrationBean @Bean带有滤豆作为目标过滤器的,并将其标记为enabled = false
FilterRegistrationBean
@Bean
不要@Bean为您的过滤器创建定义(通常就是我所做的,但是要使用YMMV,因为您可能依赖自动装配或某些使它起作用的方法)