Добрый день. Как я могу настроить разрешения и роли для пользователя относительно определенного c контроллера для указанного c объекта (что-то похожее на RBAC / ABA C) в одном приложении без использования разных сервисов OAUTH2?
Пример:
Приложение имеет глобальные роли ПОЛЬЗОВАТЕЛЯ: ROLE_USER, ROLE_ADMIN .
Также существует сущность с именем Project . USER может быть участником множества проектов. Есть несколько ролей ПОЛЬЗОВАТЕЛЯ проекта: PROJECT_ADMIN, PROJECT_EDITOR, PROJECT_USER . Каждая роль проекта может иметь свои собственные разрешения (полномочия), такие как добавление пользователя в проект, редактирование проекта и т. Д. Все конфигурации ролей хранятся в таблицах project_roles и project_permissions.
Как я понял, это можно реализовать с помощью аннотации PreAuthorize, но как можно сопоставить текущего глобального пользователя с ролью проекта?
@PreAuthorize("@projectService.hasPermission('create_project', #projectEditRequest.id)") // How to pass GlobalUserID?
@PostMapping
public ProjectDto create(@RequestBody @Validated ProjectEditRequest projectEditRequest) {
...
...
}
Может быть, есть примеры реализации такого случая?
Заранее спасибо!
Аналоговые вопросы:
Роли безопасности загрузки Spring на сущность
Роли, связанные с сущностями в Java Spring (без ответа)