06 - spring security角色和权限设置
spring security角色和权限设置
文档
- 00 - spring security框架使用
- 01 - spring security自定义登录页面
- 02 - spring security基于配置文件及内存的账号密码
- 03 - spring security自定义登出页面
- 04 - spring security关闭csrf攻击防御
- 05 - spring security权限控制
角色和权限设置
说明
-
以基于内存的账号密码为例,设置权限的写法:
@Bean public UserDetailsService userDetailsService() {InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();// 此时配置文件中的用户名和密码将不可用manager.createUser(User.withDefaultPasswordEncoder().username("user").password("password").authorities("USER_LIST").build());return manager; }
-
以基于内存的账号密码为例,设置角色的写法:
@Bean public UserDetailsService userDetailsService() {InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();// 此时配置文件中的用户名和密码将不可用manager.createUser(User.withDefaultPasswordEncoder().username("user").password("password").roles("USER").build());return manager; }
-
需要注意的是,
.authorities
和.roles
不能同时写,同时写后面的会覆盖前面的,如下面示例:@Bean public UserDetailsService userDetailsService() {InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();// 此时配置文件中的用户名和密码将不可用manager.createUser(User.withDefaultPasswordEncoder().username("user").password("password").authorities("USER_LIST").roles("USER").build());return manager; }
此时,该用户是没有
USER_LIST
权限的,该权限被后面设设置.roles
覆盖了,可以结合上篇文件的示例:05 - spring security权限控制,会发现,此时访问带USER_LIST
权限的接口,会被拒绝访问 -
实际上,调用设置角色的方法
.roles
也是在操作权限,权限名是ROLE
前缀+角色名
,比如:.roles("USER")
,相当于设置了ROLE_USER
权限 -
设置角色时,
角色名
不能以ROLE_
开头