스프링 보안 ACL을 사용하여 새 앱을 적용하려고 시도하고 일부 읽기 후에 모든 ACE에 대한 권한에 문제가 있습니다. 주체가 도메인 개체 인스턴스에 대한 관리 권한 (16)을 가지고있는 경우이 주석을 사용하여 메서드에 액세스 할 수있을 것으로 예상했습니다.
@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)으로 보호되는 모든 메서드 / 개체에 액세스 할 수있을 것이라고 생각했습니다.
짧은 대답 : 아니요, 권한은 기본적으로 계층 구조가 아닙니다.
계층 구조를 원하면 PermissionEvaluator
또는 유사한 사용자 정의 구현을 만들어야합니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다