需要注意的是,只有第一条规则将用于授权。那么一会儿呢 /user/name 符合规则 /user/name , /user/**' (starts with /用户/ ), and anyrequest() only the first rule of hasanyrole(“成员”,“管理员”)将被使用。 您还可以设置利用http方法的规则。例如,以下允许MEMBER或者ADMIN为http上/user/address` ``` .mvcMatchers(HttpMethod.GET, "/user/address").hasAnyRole("MEMBER", "ADMIN")
1条答案
按热度按时间wz3gfoph1#
首先,您需要为两个不同的用户分别提供这些角色。例如,下面将提供用户的内存表示
member
以及admin
每个人都有密码password
:现在您可以设置授权规则。对于希望其中一个角色工作的URL,可以使用
hasAnyRole(...)
对于URL,您只希望与您可以使用的管理员一起工作hasRole(...)
. 例如,下面的命令允许任何一个用户使用url/user/name
或者/user/avatar
但是管理员可以做任何以/user/**
. 拒绝所有其他URL。需要注意的是,只有第一条规则将用于授权。那么一会儿呢
/user/name
符合规则/user/name
,/user/**' (starts with
/用户/), and
anyrequest()only the first rule of
hasanyrole(“成员”,“管理员”)将被使用。 您还可以设置利用http方法的规则。例如,以下允许
MEMBER或者
ADMIN为http上
/user/address` ```.mvcMatchers(HttpMethod.GET, "/user/address").hasAnyRole("MEMBER", "ADMIN")
@Bean
static InMemoryUserDetailsManager userDetailsManager() {
UserDetails user = User.withDefaultPasswordEncoder()
.username("member")
.password("password")
.roles("MEMBER")
.build();
UserDetails admin = User.withDefaultPasswordEncoder()
.username("admin")
.password("password")
.roles("ADMIN", "MEMBER")
.build();
return new InMemoryUserDetailsManager(user);
}
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
}