在我的Spring Security配置中,我想允许所有OPTIONS
个请求。
对我来说,最简单的方法如下:
@Override
public void configure(WebSecurity web) {
web.ignoring().antMatchers(HttpMethod.OPTIONS);
}
但是WebSecurity.ignoring()
中的documentation说:
通常,已注册的请求应该仅是 静态资源。
对于动态请求,请考虑映射 请求改为允许所有用户。
因此,根据此建议,我将改用HttpSecurity
:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers(HttpMethod.OPTIONS).permitAll();
}
哪个代码本身更多,但我想也添加一个JWT过滤器:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.addFilterBefore(jwtFilter, UsernamePasswordAuthenticationFilter.class)
.authorizeRequests()
.antMatchers(HttpMethod.OPTIONS).permitAll()
.antMatchers("/some_endpoint_that_needs_the_filter").authenticated();
}
如果我这样做,Filter
也将应用于OPTIONS
请求,这不是我想要的。我当然可以阻止它,但是要实现基本上相同的目的,那还要添加更多代码。
在这种(或任何其他情况)下使用WebSecurity.ignoring()
有实际的不利之处吗?
为什么不建议使用WebSecurity
忽略非静态资源?