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