我有自定义身份验证过滤器,可创建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
为Filter
时,它会被Boot选中并作为过滤器包含在内。所以我的过滤器链看起来很像:
Filter
)http.addFilterAfter(...)
包含)显然,我想摆脱ssoAuthenticationFilter
在这里(列出的第一个)的自动注册。
任何提示非常感谢。
答案 0 :(得分:11)
2个选择:
使用您的过滤器bean作为目标过滤器添加FilterRegistrationBean
@Bean
,并将其标记为enabled = false
不要为您的过滤器创建@Bean
定义(通常是我所做的,但YMMV,因为您可能依赖于自动装配或某些东西让它工作)