Как запрограммировать пользовательские настройки - PullRequest
3 голосов
/ 28 августа 2008

Я использую Ruby on Rails для внутреннего сайта. Различные пользователи сайта имеют доступ к широкому спектру данных и весьма разнородным перспективам данных. Внутри этих разных классов пользователей должны быть уровни доступа. В пределах уровней доступа мне нужно иметь возможность добавлять функции от других классов пользователей.

В выпущенной «версии 1.0» сайта интрасети я реализовал общие классы пользователей. Теперь мне нужно реализовать более детальный контроль доступа пользователей.

Вопрос в том, как?

Какова общепринятая практика для кодирования пользовательских настроек (отображать карту (или нет); доступ к этой функции, но не к этой функции) без разбора схемы базы данных и заполнения кода представления с помощью <% if feature_allowed%> теги везде.

Ответы [ 4 ]

3 голосов
/ 29 августа 2008

Другим совершенно другим подходом было бы использование act_as_authenticated и авторизационных плагинов. Таблицы будут создаваться плагинами (то есть пользователи , роли и роли _users). Из документа:

Плагин авторизации обеспечивает следующее:

  • Простой способ проверки авторизации в классе или методе экземпляра. уровень с использованием #permit и #permit?

  • Авторизация с использованием ролей для всего приложения, класса модели или экземпляр модели (т.е. конкретный объект).

  • Некоторые похожие на английский динамические методы, которые опираются на определенные роли. Ты будешь возможность использовать такие методы, как "user.is_fan_of angelina" или "angelina.has_fans?", где «фанат» определяется только в таблице ролей.

  • Выберите и выберите миксин для желаемого уровня сложности базы данных. За все функции, вы захотите использовать «таблицу ролей объектов» (см. ниже)

2 голосов
/ 29 августа 2008

заполнение кода вида <% if feature_allowed%> теги везде.

Не думаю, что ты хочешь это сделать. Предполагая, что ни одна из предложенных альтернатив не является практически осуществимой, по крайней мере, вы должны рассмотреть возможность переноса этих проверок в свои контроллеры, где вы можете преобразовать их в before_filter.

См. Раздел 11.3 в разделе «Гибкая веб-разработка с использованием Rails» (стр. 158 в моей копии 2-го издания), где они именно это и делают.

1 голос
/ 28 августа 2008

Взгляните на эту тему разрешений

0 голосов
/ 11 октября 2008

Это гораздо больше того, что я искал ... выложено здесь для дальнейшего использования.

http://metautonomo.us/2008/09/30/easy-role-based-authorization/

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