Как спроектировать пользователей, роли и схемы разрешений? - PullRequest
1 голос
/ 17 февраля 2012

Это очень распространенная вещь в разработке веб-приложений.Я делал это несколько раз.

Но я застрял в своем текущем проекте по разработке схемы для этого.

Дело в том, что в моем приложении в начале будет три типа пользователей, например SuperAdmin, Admin и обычный пользователь.

Я планирую использовать эти типы пользователей в качестве ролей, таких как ROLE_SUPERADMIN, ROLE_ADMIN и ROLE_USER.

Система может иметь много ролей.На самом деле SuperAdmin и Администраторы создают роли и назначают эти роли пользователям.

Проблема в том, что

Супер Администраторы будут иметь права p1, p2 и p3.Супер Администраторы могут создавать других супер администраторов.Супер Администраторы могут создавать администраторов.Супер Администраторы не будут добавлять пользователей в систему.

Администраторы могут иметь разрешения p5, p6 и p7.Администраторы не могут создавать других администраторов.Администраторы могут создавать других пользователей.Администраторы также могут создавать роли, такие как, например, средства просмотра отчетов.

Супер администратор с разрешениями p1, p2 и p3 должен иметь возможность создавать администраторов с разрешениями p5, p6 и p7.Что я не совсем понимаю.

По логике, когда сами супер-админы не имеют разрешения p5, p6 и p7, как они могут создавать администраторов с этими разрешениями?

Пожалуйста, помогите мне с правильным дизайном.

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

ПОЛЬЗОВАТЕЛЬ
UserID RoleID

ROLE
RoleID RoleName

РАЗРЕШЕНИЕ
PermissionID PermissionName

ROLE_PERMISSION RoleID PermissionID

Спасибо.

Ответы [ 3 ]

2 голосов
/ 17 февраля 2012

Однажды спроектировав базу данных, подобную этой;

Я установил несколько скриптов форума, портала и CMS и проанализировал, как они справились с ситуацией, затем извлек схемы БД и использовал их в качестве ссылки.

Может быть, это может помочь

2 голосов
/ 30 июня 2013

Вам следует обратиться к структурам и стандартам авторизации, таким как XACML - XACML позволяет вам определять авторизацию на основе нескольких атрибутов, чтобы не потерять роль.Таким образом, вместо создания роли manager_in_tx_with_gold_status вы можете создавать правила, например:

пользователь с ролью = manager и location = TX может выполнять действие = просмотр ресурсов ....

Существует несколько решений от поставщиков и решений с открытым исходным кодом.Посетите страницу Википедии и домашнюю страницу стандарта для получения дополнительной информации:

У меня тоже есть канал на Youtube, который рассказывает о XACML:

2 голосов
/ 17 февраля 2012

Это загруженный вопрос, настройка участников, ролей и т. Д. - это не маленький подвиг. Я предлагаю вам взглянуть на уже написанные библиотеки, чтобы увидеть, могут ли они удовлетворить ваши потребности. То, что вы должны начать поиск в Google, это «Списки контроля доступа» (acl) для краткости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...