只有具有管理员角色的用户应该可以在“用户/全部”上发出请求,但是基本用户也可以。 这是我的安全配置:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
http
.authorizeRequests()
.antMatchers(HttpMethod.POST, "/users/**").permitAll()
.antMatchers( "/users/all").authenticated().anyRequest().hasAnyRole("ADMIN")
.antMatchers("/users/me").authenticated().anyRequest().hasAnyRole("ADMIN", "BASIC_USER")
.and()
.formLogin().disable()
.httpBasic();
}
This is the request from Postman
为什么我可以向基本用户发出请求?
如果我按此顺序放置它们:
.antMatchers( "/users/all").authenticated().anyRequest().hasAnyRole("ADMIN")
.antMatchers("/users/me").authenticated().anyRequest().hasAnyRole("ADMIN", "BASIC_USER")
.antMatchers(HttpMethod.POST, "/users/**").permitAll()
是同一回事,但是/ me请求不再起作用。
现在/ me请求响应为403。
答案 0 :(得分:0)
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return this.user.getRoles().stream().map(role -> new SimpleGrantedAuthority(String.format("ROLE_%s", role.getRole()))).collect(Collectors.toList());
}
我将角色更改为 role.getRole()
答案 1 :(得分:-1)
您可以更改这些行,即管理员限制较高吗?