Ray*_*Ray 5 algorithm permissions computer-science computer-algebra-systems
我有一个代表层次结构的数据结构。
权限存储在一个平面表中:
| pKey | type | bitperms |
Run Code Online (Sandbox Code Playgroud)
当执行搜索等全局操作时,我们需要在树中递归地检查权限。
检查与树结构的各个叶子内联的权限很容易。然而,考虑节点上的权限需要两种已知方法之一:
提前预先计算所有根(授予权限的节点),并在获取叶子时将其用作查询过滤器
是否存在任何算法可以更有效地做到这一点?也许重新组织权限数据或向层次结构添加更多信息?
也许添加一些启发式方法来应对极端情况?
不知道关于这方面的完整论文,但这是我的想法。
然后,我会从根部向上预先计算文件夹的所有权限,并在文件夹的某些权限发生更改(或添加角色等)时将它们与文件夹节点一起保存。当调用特定文件/叶子时,您只需检查文件/叶子权限及其文件夹权限。
您还可以将某些文件夹标记为“不继承父级的权限”,这可能会在根权限更改时缩短您的计算...
这将使以下操作变得便宜:
这些操作成本高昂,但由于它们不需要在任何叶子/文件上工作,因此它们只需要接触整个树的一小部分: