是否存在用于执行层次权限检查的算法



i具有代表层次结构的数据结构。

  • 文件夹
    • 文件夹
      • 文件夹
      • 文件
    • 文件
    • 等。

权限存储在平桌上:

| pKey | type | bitperms |

执行诸如搜索之类的全局操作时,我们需要在树中递归检查权限。

与树结构的各个叶子一起检查权限很容易。但是,在节点上征得许可,需要两种已知方法之一:

  • 取出过滤后的叶子后,处理每个人以检查其父母的perms
    • 成本延迟到
    • 之后
    • 可能发现了很多初始叶子,但是在处理父母之后,没有什么可以导致无用的工作
  • 预先计算所有根(授予权限的节点),并在获得叶子时用作查询过滤器

    • 如果存在许多根,则可能是一个巨大的查询

    以更有效的方式执行此操作是否存在任何算法?也许重组权限数据或在层次结构中添加更多信息?

    也许添加了一些启发式方法来处理极端?

dunno关于一份完整的论文,但这是我的想法。

  1. 您显然需要在某个时候检查从叶到根的整个路径。
  2. 我假设没有侧面的权限规则简介(即您在树上工作,而不是一般图)。
  3. 我假设几个"文件夹"节点上有很多叶子。
  4. 我还假设您有一种包含权限(Oring thitmask)或排除它们的方法(在BitMask上进行宣传)。
  5. 权限主要授予角色/组,而不是单个用户(在后一种情况下,您需要创建S.Th。
  6. 权限不会爬上树,而只能到叶子。

然后,我将在"根"文件夹上的所有权限上进行预测,并在文件夹上的某些权限更改(或添加角色等)时将其与文件夹节点一起保存。当调用特定的文件/叶子时,您只需要检查文件/叶的权限及其文件夹权限。

您还可以将某些文件夹标记为"不继承父母的权限",当根部权限更改时,可能会缩短您的计算...

这将使以下操作变得便宜:

  • 检查叶子的权限(加入叶子及其父母权限)。
  • 更改不包含更多文件夹的文件夹的权限。

这些操作是昂贵的,但是由于它们不需要在任何叶子/文件上工作,因此它们只需要触摸整棵树的次要部分:

  • 更改/扩展权限模型(例如,通过添加角色/群体,它可能会根据您的实现来扩展您的位掩模)。
  • 更改根部权限。

最新更新