个人学习

WebSecurityConfigurerAdapter和Res

2020-03-19  本文已影响0人  门心叼龙

默认继承了WebSecurityConfigurerAdapter之后,再加上几行代码,我们就能实现以下的功能:

这样他就提供基于web的security, 安全服务配置URL强制拦截保护服务,可以配置哪些路径不需要保护,哪些需要保护,它与ResourceServerConfigurerAdapter区别在于:

WebSecurityConfigurerAdapter部分源码如下:

    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
       ...
    }
    public void configure(WebSecurity web) throws Exception {
    }
    protected void configure(HttpSecurity http) throws Exception {
        ...
    }
    ...
}

ResourceServerConfigurerAdapter部分源码如下:

public class ResourceServerConfigurerAdapter implements ResourceServerConfigurer {
    @Override
    public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
    }
    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().anyRequest().authenticated();
    }
}

在ResourceServerProperties中,定义了它的order默认值为SecurityProperties.ACCESS_OVERRIDE_ORDER - 1;,是大于100的,即WebSecurityConfigurerAdapter的配置的拦截要优先于ResourceServerConfigurerAdapter,优先级高的http配置是可以覆盖优先级低的配置的。
某些情况下如果需要ResourceServerConfigurerAdapter的拦截优先于WebSecurityConfigurerAdapter需要在配置文件中添加

security.oauth2.resource.filter-order=99

或者重写WebSecurityConfigurerAdapter的Order配置,如下:

@Configuration
@EnableWebSecurity
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
    ...
}
上一篇 下一篇

猜你喜欢

热点阅读