Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Spring Security创建新用户时无法同时使用角色和权限_Spring_Spring Boot_Spring Security - Fatal编程技术网

使用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") 
并删除
角色
声明