Security 在哪里管理ACL继承?

Security 在哪里管理ACL继承?,security,inheritance,hierarchy,acl,Security,Inheritance,Hierarchy,Acl,我应该在哪里最好地管理ACL的层次结构 我看到了三种管理ACL层次结构的可能性: 1)ACL本身管理层次结构: class Acl { Acl parent; // ... } interface AclHolder { Acl getAcl(); } public class Folder implements AclHolder { private AclHolder parent; private Acl acl; @Override

我应该在哪里最好地管理ACL的层次结构

我看到了三种管理ACL层次结构的可能性:

1)ACL本身管理层次结构:

class Acl {
  Acl parent;
  // ...
}
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;
    }
}
2)构建单独的树结构来管理层次结构

3)使用已经存在的层次结构作为ACL的隐式层次结构(就像文件系统已经有层次结构一样)

以下代码是使用现有层次结构的一种可能性:

class Acl {
  Acl parent;
  // ...
}
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;
    }
}
另一种方法是使用规则来定义层次结构

我认为创建如1)和2)中所示的显式ACL层次结构可能会有问题,因为该层次结构通常必须反映系统结构,并且是一种复制形式


最好的方法是什么?

出于性能原因,我决定不使用动态继承。继承对于用户来说只是一个方便的特性,但它不会直接在ACL中实现。更改会传播到子ACL,但子ACL不知道它们的父ACL。我将使用现有的层次结构(如文件系统中的层次结构)来实现这一点