我正在尝试使用Spring Security(引导启动程序)实现具有“非线性”角色层次结构的结构。
为更好地解释它,请想象以下情况:
角色:
角色层次结构:
现在是问题:
AND
当我使用
注册角色层次结构时roleHierarchy.setRoleHierarchy("PRESIDENT>HUMAN_RESOURCES_DIRECTOR");
roleHierarchy.setRoleHierarchy("PRESIDENT>IT_DIRECTOR");
它仅记录“ PRESIDENT> IT_DIRECTOR”。
这可能是因为我可能对Spring安全角色层次结构有误解。
无论如何,我如何应用它,以便我的“总裁”可以访问两个角色权限而无需添加大量的手动授权?
编辑:
为澄清起见,我发现的所有示例均遵循线性层次结构,例如
总裁> IT总监
IT总监>技术员
编辑2:
在Spring Security Debug中,当以暴露的方式实现此非线性角色层次结构时,我收到一条类似于以下消息:
getReachableGrantedAuthorities() - From the roles [ROLE_PRESIDENT] one can reach [ROLE_PRESIDENT, ROLE_IT_DIRECTOR] in zero or more steps.
答案 0 :(得分:0)
问题在于对方法“ setRoleHierarchy”的理解。
该方法设置角色层次结构,而不添加它。
为了执行所需的操作,需要“连接”层次结构,例如:
String hierarchy = "ROLE_PRESIDENT > ROLE_IT_DIRECTOR "+"ROLE_PRESIDENT > ROLE_HUMAN_RESOURCES_DIRECTOR"; // Or write it straight up
roleHierarchy.setRoleHierarchy(hierarchy);