在哪里管理ACL继承?

时间:2010-02-12 16:09:54

标签: security inheritance hierarchy acl

我应该在哪里最好地管理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;
    }
}

另一种方法可能是使用规则来定义什么是层次结构以及其他什么。

我认为创建一个类似于1)和2)的显式ACL层次结构可能会有问题,因为这种层次结构通常必须反映系统结构并且是一种重复形式。

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

出于性能原因,我决定不采用动态继承。继承只是用户的便利功能,但不会直接在ACL中实现。更改将传播到子ACL,但子ACL不知道其父级。我将使用现有的层次结构(如文件系统中的层次结构)来执行此操作。