Предположим, что у меня есть таблица Роли в базе данных, администратор может добавлять/удалять роль, назначать разрешение для каждой роли. Каковы наилучшие методы извлечения ролей из БД, а затем выводятся элементы в зависимости от каждой роли. Я видел много образцов, но они всегда используют фиксированные роли в JS . Мы можем сделать это легко на стороне сервера, но я хочу знать, как наилучшим образом его реализовать в AngularJS/Knockout/Ember Большое вам спасибоКаковы наилучшие методы извлечения ролей из базы данных, затем отображаются зависящие от роли роли в AngularJS/Knockout/Ember
ответ
Что я сделал в прошлом, при использовании нокаут является 3-этапный подход:
Записывает объект страницы (при визуализации), который подробно привилегии пользователя. Например,
var privileges = {CanView: true, CanEdit: true, CanAssignRoles: false};
Напишите функцию общего назначения, которая принимает параметр, указывающий требуемую привилегию, и которая будет извлекать вышеуказанный объект и определять, является ли привилегия пользователя на требуемом уровне.
На ваш взгляд-модели, добавить такие функции, как
self.CanAssignRoles = функция() {вернуться determineAccess ('CanAssignRoles'); };
Затем ссылка
CanAssignRoles
в привязке HTML.< типа ввод = «Флажок» данные привязка = «Видимый: CanAssignRoles»/>
А как вы получите, что privileges
объекта на страницу, которая зависит от вашей серверной технологии (.NET, PHP, и т. Д..).
Это выглядит великолепно, но я думаю, будет лучше, если мы присоединим разрешения к каждому объекту в случае, если деловые правила сложны. Например, у меня новый контакт, и я хочу поделиться с моими коллегами, но я не хочу, чтобы они могли удалить/обновить этот контакт. –
Я сделал один такой вид, используя 'bind handlers' в ko on html controls, который будет скрывать/показывать, отключать/разрешать на основе уровня доступа. Я предлагаю называть bindingHandlers концепцию, которая будет немного сложнее в ko docs. cheers –
Можете ли вы предложить конкретную ссылку, пожалуйста. Насколько я понимаю, это по-прежнему используется фиксированными ролями в HTML. Спасибо –