使用Spring Security创建新用户时无法同时使用角色和权限
我正在使用以下代码创建内存中用户:使用Spring Security创建新用户时无法同时使用角色和权限,spring,spring-boot,spring-security,Spring,Spring Boot,Spring Security,我正在使用以下代码创建内存中用户: @Bean public UserDetailsService userDetailsService() { InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager(); manager.createUser(User.withUsername("user").password("pass").authorities("READ","WRITE").roles("U
@Bean
public UserDetailsService userDetailsService() {
InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
manager.createUser(User.withUsername("user").password("pass").authorities("READ","WRITE").roles("USER").build());
System.out.println("user created");
return manager;
}
我的一个REST控制器方法中包含以下代码:
System.out.println("printing authorities..");
User user = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
user.getAuthorities().forEach(item-> System.out.println(item.toString()));
我得到以下输出:
printing authorities..
ROLE_USER
我的问题是,应该是这样吗?如果执行链式方法调用权限(“XX”).roles(“YY”),则后者会重写前者
我想在检查角色的基础上,使用自定义的PermissionEvaluator
来评估权限。如何向用户提供读/写等附加权限
我的问题是,应该是这样吗?如果执行链接方法调用
当局(“XX”)。角色(“YY”),后者写在前者之上
正如@dur所提到的,这就是它的实现方式。但是要知道
hasRole('XX')
将检查应用程序中的Role\u XX,而
hasauthriorty('XX')
将检查XX。取决于应用程序定义角色的方式。如果应用程序中的每个角色都以角色作为前缀,则hasRole提供了一种方便的方式自动附加该前缀
我想使用自定义PermissionEvaluator在上评估权限
角色检查的顶部。如何提供其他权限
喜欢读/写给用户吗
我想您已经在代码中使用了这一行:
.authorities("READ","WRITE")
由于此.roles(“用户”)
覆盖了以前的声明,因此可以将其更改为:
.authorities("READ","WRITE","ROLE_USER")
并删除角色
声明