应该在哪里最好的管理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不知道他们的父母。我将使用现有层次结构(如在文件系统层次结构)来做到这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top