如何将Spring Security配置为对除相同级别中的白名单之外的所有请求使用自定义过滤器,例如“/ login”会跳过我的过滤器,但其他所有内容“/ **”都会通过过滤器。
作为一种解决方法,我可以使用不同的前缀,“/ secured / **”vs“/ whitelist / **”或忽略过滤器中列入白名单的前缀,但这似乎不是一个干净的解决方案。
我已经尝试使用@Order(1和2)设置两个配置,但它不起作用。
@EnableWebSecurity
public class SpringSecurityConfig {
@Configuration
@Order(1)
@EnableGlobalMethodSecurity(securedEnabled = true)
public static class JwsSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
@Autowired
private StatelessAuthenticationFilter statelessAuthenticationFilter;
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/login");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/**").authenticated()
.anyRequest().authenticated()
.and().addFilterBefore(statelessAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
}
@Override
@Bean
public AuthenticationManager authenticationManagerBean() throws Exception {
return authenticationManager();
}
}
}