Как реализовать роли по умолчанию для контроля доступа на основе ролей
Я внедряю систему контроля доступа на основе ролей.
У пользователей есть роли (многие ко многим)
Роли имеют разрешения (многие-ко-многим)
Роли имеют привилегии (многие ко многим)
Роль belongs
Клиенту
Я хочу иметь 2 роли по умолчанию: Admin и Normal. Проблема в том, роль с belong
для клиентов. Таким образом, это означает, что мне нужно определить эти роли по умолчанию для каждого клиента.
Как я могу избежать определения одинаковых 2 ролей для каждого клиента?
(Первая идея, которую я придумал, состояла в том, чтобы оставить владельцев этих ролей по умолчанию NULL, но это добавит много дополнительного контроля и разветвление моих методов авторизации)
1 ответ
Не уверен, правильно ли я понял, но роль не должна зависеть от пользователей...
Общее решение на уровне БД заключается в использовании таблицы соединений, то есть одной таблицы USER, одной таблицы ROLE и таблицы USER_ROLE с двумя внешними ключами для таблиц USER и ROLE соответственно.
Решение на уровне JPA (я полагаю, вы используете это из-за добавленной вами метки "Java") состоит в том, чтобы аннотировать коллекцию, представляющую ассоциацию, с тегом @ManyToMany, и остальная часть будет обрабатываться средой.