Wo sollte ich am besten eine Hierarchie von ACLs verwalten?Wo ACL-Vererbung verwalten?
Ich sehe drei Möglichkeiten, um eine Hierarchie von ACLs zu verwalten:
1) Die ACLs selbst die Hierarchie verwalten:
class Acl {
Acl parent;
// ...
}
2) eine separate Baumstruktur Constructing die Hierarchie zu verwalten .
3) Verwenden einer bereits vorhandenen Hierarchie als implizite Hierarchie für ACLs (wie ein Dateisystem hat bereits eine Hierarchie).
würde der folgende Code eine Möglichkeit, eine bestehende Hierarchie zu verwenden:
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;
}
}
Ein weiterer Ansatz Regeln verwenden könnte zu definieren, was sie sonst was hierarchisch ist.
Ich denke, es könnte problematisch sein, eine explizite ACL-Hierarchie wie in 1) und 2) zu erstellen, da diese Hierarchie normalerweise die Systemstruktur widerspiegeln muss und eine Art der Duplizierung ist.
Was ist der beste Weg?