在哪里管理 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 层次结构可能会出现问题,因为该层次结构通常必须反映系统结构,并且是一种重复形式。
最好的方法是什么?
Where should I best manage a hierarchy of ACLs?
I see three possibilities to manage a hierarchy of ACLs:
1) The ACLs themselves manage the hierarchy:
class Acl {
Acl parent;
// ...
}
2) Constructing a separate tree structure to manage the hierarchy.
3) Using an already existing hierarchy as the implicit hierarchy for ACLs (like a filesystem already has a hierarchy).
The following code would be one possibility to use an existing hierarchy:
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;
}
}
Another approach could be to use rules to define what is hierarchical to what else.
I think it could be problematic to create an explicit ACL hierarchy like in 1) and 2) because this hierarchy usually has to reflect the system structure and is a form of duplication.
What is the best way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
出于性能原因,我决定反对动态继承。继承只是为用户提供方便的功能,但不会直接在 ACL 中实现。更改会传播到子 ACL,但子 ACL 不知道其父 ACL。我将使用现有的层次结构(如文件系统中的层次结构)来执行此操作。
I decided against dynamic inheritance for performance reasons. Inheritance will be only a convenience feature for users but it won't be implemented in the ACL directly. Changes are propagated to child ACLs, but child ACLs don't know their parents. I'll use the existing hierarchy (like the hierarchy in a file system) to do this.