Я нахожусь здесь, чтобы получить некоторые подсказки о реализации безопасности в моем приложении.
Мой бэкэнд - CRUD. Подводя итог, можно сказать, что эти конечные точки CRUD доступны для 2 типов пользователей (администратор и пользователь).
Администратор имеет полный доступ, а Пользователь имеет доступ только к своим ресурсам. (Каждый ресурс в MongoDB имеет ссылку на userId).
Я пытался добавить @Query для каждого метода в каждом хранилище, но это не сработало:
@Query("{ 'id' : ?#{hasRole('ROLE_ADMIN') ? {} : principal?.id }}")
Page<User> findAllSecured(Pageable page);
На самом деле, я не уверен, что он может работать (потому что не может запросить все объекты), и если бы он работал, я бы хотел более высокоуровневое решение (избегайте повторения @Query для каждого метода ..).
У вас есть идеи для общего решения?