2010-02-12 10 views
5

¿Dónde debo gestionar mejor una jerarquía de ACL?¿Dónde administrar la herencia de ACL?

veo tres posibilidades para gestionar una jerarquía de ACL:

1) Las ACL mismos se ocupan de la jerarquía:

class Acl { 
    Acl parent; 
    // ... 
} 

2) La construcción de una estructura de árbol independiente para gestionar la jerarquía .

3) Usar una jerarquía ya existente como la jerarquía implícita para las ACL (como un sistema de archivos que ya tiene una jerarquía).

El siguiente código sería una posibilidad de utilizar una jerarquía existente:

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; 
    } 
} 

Otro enfoque podría ser el uso de reglas para definir lo que es jerárquica para qué más.

Creo que podría ser problemático crear una jerarquía de ACL explícita como en 1) y 2) porque esta jerarquía generalmente tiene que reflejar la estructura del sistema y es una forma de duplicación.

¿Cuál es la mejor manera?

Respuesta

0

Decidí evitar la herencia dinámica por motivos de rendimiento. La herencia será solo una característica de conveniencia para los usuarios, pero no se implementará directamente en la ACL. Los cambios se propagan a las ACL secundarias, pero las ACL secundarias no conocen a sus padres. Usaré la jerarquía existente (como la jerarquía en un sistema de archivos) para hacer esto.

Cuestiones relacionadas