2015-05-25 4 views
1

Предположим, что у меня есть таблица Роли в базе данных, администратор может добавлять/удалять роль, назначать разрешение для каждой роли. Каковы наилучшие методы извлечения ролей из БД, а затем выводятся элементы в зависимости от каждой роли. Я видел много образцов, но они всегда используют фиксированные роли в JS . Мы можем сделать это легко на стороне сервера, но я хочу знать, как наилучшим образом его реализовать в AngularJS/Knockout/Ember Большое вам спасибоКаковы наилучшие методы извлечения ролей из базы данных, затем отображаются зависящие от роли роли в AngularJS/Knockout/Ember

+0

Я сделал один такой вид, используя 'bind handlers' в ko on html controls, который будет скрывать/показывать, отключать/разрешать на основе уровня доступа. Я предлагаю называть bindingHandlers концепцию, которая будет немного сложнее в ko docs. cheers –

+0

Можете ли вы предложить конкретную ссылку, пожалуйста. Насколько я понимаю, это по-прежнему используется фиксированными ролями в HTML. Спасибо –

ответ

1

Что я сделал в прошлом, при использовании нокаут является 3-этапный подход:

  1. Записывает объект страницы (при визуализации), который подробно привилегии пользователя. Например,

    var privileges = {CanView: true, CanEdit: true, CanAssignRoles: false};

  2. Напишите функцию общего назначения, которая принимает параметр, указывающий требуемую привилегию, и которая будет извлекать вышеуказанный объект и определять, является ли привилегия пользователя на требуемом уровне.

  3. На ваш взгляд-модели, добавить такие функции, как

    self.CanAssignRoles = функция() {вернуться determineAccess ('CanAssignRoles'); };

    Затем ссылка CanAssignRoles в привязке HTML.

    < типа ввод = «Флажок» данные привязка = «Видимый: CanAssignRoles»/>

А как вы получите, что privileges объекта на страницу, которая зависит от вашей серверной технологии (.NET, PHP, и т. Д..).

+0

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