【问题标题】:Nonlinear Role Hierarchy using Spring Security使用 Spring Security 的非线性角色层次结构
【发布时间】:2018-07-30 23:27:46
【问题描述】:

我正在尝试使用 Spring Security (Boot Starter) 实现具有“非线性”角色层次结构的结构。

为了更好地解释它,想象以下情况:

角色:

  • 总裁
  • 人力资源总监
  • IT 总监
  • 助理
  • 技术员

角色层次结构:

  • 人力资源总监 > 助理
  • IT 总监 > 技术员

现在的问题:

  • 总裁 > 人力资源总监

  • 总裁 > IT 总监

当我使用

注册角色层次结构时
roleHierarchy.setRoleHierarchy("PRESIDENT>HUMAN_RESOURCES_DIRECTOR");
roleHierarchy.setRoleHierarchy("PRESIDENT>IT_DIRECTOR");

它只记录“PRESIDENT> IT_DIRECTOR”。

这可能是因为我可能误解了 Spring Security Role Hierarchy。

无论如何,我如何应用它,以便我的“总统”可以访问这两个角色权限而无需添加大量的手动授权?


编辑:

澄清一下,我发现的所有示例都遵循线性层次结构,例如

总裁 > 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.

【问题讨论】:

    标签: spring spring-security


    【解决方案1】:

    问题在于对“setRoleHierarchy”方法的理解。

    该方法设置角色层次结构,而不是添加它。

    为了做想要的事情,需要“连接”层次结构,如下所示:

    String hierarchy = "ROLE_PRESIDENT > ROLE_IT_DIRECTOR "+"ROLE_PRESIDENT > ROLE_HUMAN_RESOURCES_DIRECTOR"; // Or write it straight up
    roleHierarchy.setRoleHierarchy(hierarchy);
    

    【讨论】:

      猜你喜欢
      • 2016-01-03
      • 2012-12-01
      • 2019-06-21
      • 2011-11-21
      • 2013-10-31
      • 2011-11-03
      • 2011-01-31
      • 2014-11-13
      • 2015-02-15
      相关资源
      最近更新 更多