Как реализовать роли по умолчанию для контроля доступа на основе ролей

Я внедряю систему контроля доступа на основе ролей.

У пользователей есть роли (многие ко многим)
Роли имеют разрешения (многие-ко-многим)
Роли имеют привилегии (многие ко многим)
Роль belongs Клиенту

Я хочу иметь 2 роли по умолчанию: Admin и Normal. Проблема в том, роль с belong для клиентов. Таким образом, это означает, что мне нужно определить эти роли по умолчанию для каждого клиента.

Как я могу избежать определения одинаковых 2 ролей для каждого клиента?

(Первая идея, которую я придумал, состояла в том, чтобы оставить владельцев этих ролей по умолчанию NULL, но это добавит много дополнительного контроля и разветвление моих методов авторизации)

1 ответ

Не уверен, правильно ли я понял, но роль не должна зависеть от пользователей...

Общее решение на уровне БД заключается в использовании таблицы соединений, то есть одной таблицы USER, одной таблицы ROLE и таблицы USER_ROLE с двумя внешними ключами для таблиц USER и ROLE соответственно.

Решение на уровне JPA (я полагаю, вы используете это из-за добавленной вами метки "Java") состоит в том, чтобы аннотировать коллекцию, представляющую ассоциацию, с тегом @ManyToMany, и остальная часть будет обрабатываться средой.

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