RequestMatcher中的替代方案

时间:2018-03-19 20:32:34

标签: spring-security

是否有人知道如何获得"替代品#34; (或)在Spring Security的RequestMatchers中?

基本上,我想实现以下

public class ApplicationWebSecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
        .antMatchers(HttpMethod.GET, "/api/**").hasAuthority("READONLY")
        //.or()
        .antMatchers("/api/**").hasRole("REAL_USER");
}

所以,要求用户要么具有权限READONLY(如果它是GET请求),要么具有角色REAL_USER(如果它不是GET或者用户没有权限READONLY)< / p>

感谢

1 个答案:

答案 0 :(得分:0)

所有匹配器都是OR合并,但使用了第一个匹配的匹配器。因此,您必须完全配置每个匹配器。

您修改过的代码:

public class ApplicationWebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers(HttpMethod.GET, "/api/**").hasAnyAuthority("READONLY", "ROLE_REAL_USER")
                .antMatchers("/api/**").hasRole("REAL_USER");
    }