2010-02-12 62 views
5

我應該在哪裏最好地管理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; 
    } 
} 

另一種方法可以是使用規則來定義什麼是分層次的,以什麼。

我認爲創建一個明確的ACL層次結構可能會有問題,如1)和2),因爲此層次結構通常必須反映系統結構並且是一種重複形式。

什麼是最好的方法?

回答

0

出於性能原因,我決定不使用動態繼承。繼承只是用戶的一個便利功能,但不會直接在ACL中實現。更改傳播到子ACL,但子ACL不知道他們的父母。我將使用現有的層次結構(如文件系統中的層次結構)來執行此操作。