Разрешение администрации весеннего списка безопасности

Я пытаюсь применить новое приложение с помощью весеннего списка безопасности 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 или похожие.

Другие вопросы по тегам