使用WebSecurity忽略非静态资源实际上是不好的做法吗?

时间:2019-03-17 11:11:01

标签: java spring spring-security

在我的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忽略非静态资源?

0 个答案:

没有答案