我的 Spring Boot 2 + Spring Security 应用程序中有一个角色层次结构:
@Bean
public RoleHierarchy roleHierarchy() {
var rh = new RoleHierarchyImpl();
rh.setHierarchy("ROLE_ADMIN > ROLE_USER and ...");
return rh;
}
现在我(作为管理员)想代表另一个用户创建一个实体,但我应该检查该用户是否具有基于上述层次结构的特定权限。
我知道可以为当前经过身份验证的用户调用 spring security hasRole() ,但就我而言,我想要授权的用户未经过身份验证。
现在,我可以检查用户是否具有该特定权限:
public boolean hasAuthority(User user, String authority) {
return user.getAuthorities()
.stream()
.anyMatch(grantedAuthority -> grantedAuthority.getName().equals(authority));
}
但这样一来,相当长的层次结构将被忽略。
如果有任何帮助,我将不胜感激。
HUWWW
相关分类