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
Java 考虑到角色层次结构,Spring Security为未经身份验证的用户提供Role()_Java_Spring_Spring Boot_Spring Security - Fatal编程技术网

Java 考虑到角色层次结构,Spring Security为未经身份验证的用户提供Role()

Java 考虑到角色层次结构,Spring Security为未经身份验证的用户提供Role(),java,spring,spring-boot,spring-security,Java,Spring,Spring Boot,Spring Security,我在Spring Boot 2+Spring安全应用程序中有一个角色层次结构: @Bean public RoleHierarchy roleHierarchy() { var rh = new RoleHierarchyImpl(); rh.setHierarchy("ROLE_ADMIN > ROLE_USER and ..."); return rh; } 现在,我(作为管理员)希望代表另一个用户创建一个实体,但我应该检查该用户是否具有基于上述层次结构的特

我在Spring Boot 2+Spring安全应用程序中有一个角色层次结构:

@Bean
public RoleHierarchy roleHierarchy() {
    var rh = new RoleHierarchyImpl();
    rh.setHierarchy("ROLE_ADMIN > ROLE_USER and ...");

    return rh;
}
现在,我(作为管理员)希望代表另一个用户创建一个实体,但我应该检查该用户是否具有基于上述层次结构的特定权限

我知道可以为当前经过身份验证的用户验证,但在我的情况下,我要授权的用户没有经过身份验证

现在,我可以检查用户是否具有该特定权限:

public boolean hasAuthority(User user, String authority) {
    return user.getAuthorities()
            .stream()
            .anyMatch(grantedAuthority -> grantedAuthority.getName().equals(authority));
}
但这样的话,相当长的层次结构就会被忽略


我非常感谢您的帮助。

您可以使用角色层次结构,请参阅:

收藏