Выбор дизайна уровня доступа / роли безопасности: индивидуальные роли или наследование - PullRequest
1 голос
/ 04 марта 2011

Пожалуйста, рассмотрите этот сценарий: веб-приложение, имеющее 4 уровня доступа: администратор> менеджер> представитель> клиент> без роли (страницы общего доступа)

С моей текущей настройкой приложения я могу разрешить доступ через 2способы:

  1. Я могу написать код, который будет иметь приоритет роли, т. е. если пользователь является менеджером - приложение автоматически предполагает, что он / она имеет право на доступ к областям, которые клиент &Представитель может, но не администратор.

  2. Я могу назначить каждую роль отдельно в таблице.Например, пользователю будет назначено 3 роли.Таким образом, приложение не примет роли приоритета / наследования.Я могу либо позволить администратору назначать пользователей с ролями, либо исправить код, который автоматически назначит дополнительные роли пользователю, если ему будет предоставлен более высокий уровень доступа.

Какой из этих двух подходов являетсялучше с точки зрения ремонтопригодности?

PS

Не думаю, что это имеет значение, но я использую Rails 3 с CanCan & Devise.Кроме того, мои настройки взаимоотношений между ролями и пользователями следующие:

Роль <=> (HABTM) <=> Пользователь

1 Ответ

2 голосов
/ 04 марта 2011

У меня аналогичное требование к роли, и я выбрал подход 1. Естественно предположить, что чем выше иерархия ролей, тем выше у вас доступ. Итак, говоря, что у менеджера есть доступ к ресурсам, которые есть у представителя, все в порядке.

Кроме того, поскольку вы используете CanCan, провал очень легко настроить. Начните с роли с наименьшим доступом в верхней части блока инициализации и продолжайте свой путь вниз.

...