2010-02-12 3 views
5

어디에서 ACL의 계층 구조를 최상으로 관리해야합니까? 계층 구조를 관리하기 위해 별도의 트리 구조를 구축ACL 상속을 어디에서 관리 할 수 ​​있습니까?

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

2) :

1) 대한 ACL 자체가 계층 구조를 관리 :

나는 ACL을의 계층 구조를 관리하는 세 가지 가능성을 볼 .

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 계층 구조를 만드는 것은 문제가 될 수 있다고 생각합니다.

가장 좋은 방법은 무엇입니까?

답변

0

성능상의 이유로 동적 상속을 선택했습니다. 상속은 사용자에게 편리한 기능 일 뿐이지 만 ACL에 직접 구현되지는 않습니다. 변경 사항은 하위 ACL에 전달되지만 하위 ACL은 부모를 알지 못합니다. 나는 이것을하기 위해 기존의 계층 구조 (파일 시스템의 계층 구조와 같은)를 사용할 것이다.

관련 문제