我有以下配置类,我想授权某些请求并拒绝所有其他请求。
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.httpBasic()
.and()
.authorizeRequests()
.antMatchers("/phx-config-rest/dev/master").hasRole("DEV")
.anyRequest().authenticated()
.and()
.csrf()
.disable();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.
inMemoryAuthentication()
.withUser("devuser")
.password("dev")
.roles("DEV");
}
}
根据此代码我的印象是,Spring只允许我使用用户' devuser'来访问/ phx-config-rest / dev / master。如果我尝试访问/ phx-config-rest / prod / master或任何其他URL,请求将被视为未授权访问。顺便说一句,这段代码是关于Spring云配置服务器的。有什么想法?
答案 0 :(得分:4)
更改
.anyRequest().authenticated()
到
.anyRequest().denyAll()
答案 1 :(得分:3)
您只将网址/phx-config-rest/dev/master
限制为具有角色DEV
的用户,但是对于具有任何角色的每个登录用户(包括用户devuser
),都可以访问所有其他网址,
见ExpressionUrlAuthorizationConfigurer.AuthorizedUrl#authenticated
:
指定任何经过身份验证的用户都允许使用URL。
您必须使用ExpressionUrlAuthorizationConfigurer.AuthorizedUrl#denyAll
代替authenticated
:
指定任何人都不允许使用网址。