Разрешение администрации весеннего списка безопасности
Я пытаюсь применить новое приложение с помощью весеннего списка безопасности 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), чем admin.
1 ответ
Краткий ответ: Нет, разрешения не являются иерархическими.
Если вы хотите, чтобы они были иерархическими, вам нужно сделать собственную реализацию PermissionEvaluator
или похожие.