2014-04-01 6 views
0

스프링 보안 ACL을 사용하여 새 응용 프로그램을 시행하려고 시도하고 일부 읽기 후에 모든 ACE에 대한 권한 문제가 있습니다. 나는 주체가 도메인 객체 인스턴스를 통해 관리 권한 (16)이있는 경우이 주석과 방법에 액세스 할 수 있다고 기대했다 :스프링 보안 acl 관리 권한

@Override 
@PostFilter("hasPermission(filterObject, 'READ')") 
public List<Project> findAllProjects() { 
    TypedQuery<Project> tq = em.createNamedQuery("Project:findAll", Project.class); 
    List<Project> projects = tq.getResultList(); 
    return projects; 
} 

하지만

@PostFilter("hasPermission(filterObject, 'ADMINISTRATION') OR hasPermissions(filterObject,'READ')") 

가 작동하는 것 같다.
제 질문은 다음과 같습니다. 이러한 권한이 계층 적이지 않습니까?
즉, 읽기 권한이있는 메소드에 대한 관리자 권한을 명시 적으로 지정해야하는 이유는 무엇입니까? 읽기보다 관리자가 "커"가 아닌가?
관리자 권한보다 "하위"작업 (C, R, U, D)으로 보호 된 모든 메소드/개체에 hte 사용자가 액세스 할 수있는 권한을 사용자에게 부여하면 사용자 권한이 부여된다고 생각했습니다.

답변

0

짧은 대답 : 아니요, 사용 권한은 계층 적으로 기본 제공되지 않습니다.

계층 적으로 만들려면 PermissionEvaluator 또는 그와 비슷한 사용자 지정 구현을 만들어야합니다.

+0

확인해 주셔서 감사합니다. –