凡来管理ACL继承?
-
20-09-2019 - |
题
我
应该在哪里最好的管理ACL的层次?
我看到三种可能性来管理ACL的层次结构:
<强> 1)强>上的ACL本身管理层次结构:
class Acl {
Acl parent;
// ...
}
<强> 2)强>构造单独的树结构来管理层级。
第3)是一个已经存在的层次结构作为ACL的隐式层次结构(如一个文件系统已经有一个层次)。
下面的代码将是一个可能性使用现有的层次结构:
interface AclHolder {
Acl getAcl();
}
public class Folder implements AclHolder {
private AclHolder parent;
private Acl acl;
@Override
public Acl getAcl(){
return acl==null ? parent.getAcl() : acl;
}
}
另一种方法可以是使用规则来定义什么是分层次的,以什么。
我认为这可能是有问题的创建显式ACL层级等在1)和2),因为这种层次结构通常具有以反映系统结构和复制是一种形式。
什么是最好的方法是什么?
解决方案
我决定针对出于性能原因动态继承。继承将是只为了方便用户的功能,但它不会在ACL中直接实现。更改会传播到孩子的ACL,但孩子的ACL不知道他们的父母。我将使用现有层次结构(如在文件系统层次结构)来做到这一点。
不隶属于 StackOverflow