Задать вопрос
ANDREW_TUR
@ANDREW_TUR

Spring Security. Разные права для разных пользователей. (Как скрыть для Коли (одного из юзеров) возможность «Создать пост» ) ???

Делаю веб приложение на Java c использованием:
- Spring MVC
- Spring Security
- Hibernate

Распределение прав доступа к ресурсам/страничкам происходит через Spring Security. Есть три роли:
- User
- Admin
- SuperAdmin

Хочу чтоб админ мог редактировать права пользователя обычных юзеров, напр.:
юзер Вася может редактировать и создавать посты
юзер Коля может редактировать, а создавать нет.

Что Коля что Вася - это роль User....

Вопрос: как скрыть для Коли возможность "Создать пост"? Какие есть способы реализации данного функционала?
  • Вопрос задан
  • 3069 просмотров
Подписаться 2 Средний Комментировать
Решения вопроса 2
jaxtr
@jaxtr
JavaEE/Spring-разработчик
Вариант простой: создаёшь полномочия для каждого действия (что-то вроде CREATE_POST, MODIFY_POST и т.д.), в БД хранишь выданные полномочия (персонально или через роли/группы пользователей), и подтягиваешь их при авторизации. Для проверки используешь hasAuthority в настройках правил доступа или в аннотациях ограничения доступом к методам (Method Security).

Вариант второй и сложный: используй ACL в Spring Security.
Ответ написан
@bobzer
Java EE Developer
Никакой фреймворк общего применения не знает требований Вашего конкретного приложения. Это значит, что доступ к каждому действию придётся так или иначе прописать в самом приложении. Если требуется тонкая настройка доступов, то нередко создаётся понятие "права на действие", множество которых можно собирать в роли. При этом приложение "знает" о правах (тонких настройках), а роли создаются произвольно в административной части приложения и наполняются нужными правами. Такой подход создаёт дополнительные сложности в программировании и в последующей эксплуатации, но это плата за гибкость. Для обеспечения максимальной гибкости, при разработке приложения на каждое действие, доступное пользователю, придётся создавать соответствующее право, и в приложении прописывать его проверку.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы