security - 在哪里管理 ACL 继承?

标签 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 层次结构可能会有问题,因为该层次结构通常必须反射(reflect)系统结构并且是一种重复形式。

什么是最好的方法?

最佳答案

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

关于security - 在哪里管理 ACL 继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2253163/

相关文章:

javascript - 是否安全地允许插入来自国外服务器的图像?

java - SSO - CAS 协议(protocol) - 更新参数

java - 在网络应用程序(war)中,我有一个配置文本文件。如何阻止网络访问呢?

c++ - 调用重写函数并使用基类中的重载变量

c++ - OOP 设计 - 从具有通用类型的容器继承

java - 寻找 Java 项目的层次结构标准

c++ - 如何部署将在特定时间或使用次数后过期的 .NET 应用程序

Eclipse "add unimplemented methods"快捷方式

c# - 如何在 WPF TreeView 中显示类层次结构?

git - 将 git 存储库向下移动到层次结构级别