Каковы именно «задачи» в RBAC Yii? - PullRequest
8 голосов
/ 20 февраля 2012

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

Теперь я прочитал большинство, если не всю существующую документацию,В текущей документации говорится, что «задача состоит из операций». В этой вики-статье говорится, что разные термины - это просто соглашения об именах, и единственное существующее ограничение - структурное: роли должны включать задачи (или другие роли);задачи должны включать операции (или другие задачи), а операции - это атомарный термин, который в дальнейшем не составляется другими объектами.Я также прочитал соответствующие разделы в книгах «Agile web dev ...» и «Yii cookbook» - обе не проливают дополнительный свет на эту проблему (по крайней мере, как видно из моих очков).

Давайте перейдем к моему примеру, где я представлю вопрос.На самом деле, давайте воспользуемся примером, аналогичным тому, который продемонстрирован в большинстве упомянутых выше источников документации: допустим, у меня есть запись в блоге, и я хочу, чтобы ее автор мог "обновить свою запись".Теперь, почему это должно быть задачей, которая обычно демонстрируется в ресурсах документации, а не операцией с правилом biz?

Я думаю, что приведенный выше вопрос раскрывает неверное определение «задачи» (в контексте RBACконечно).

Помогите, пожалуйста, найти лучшее определение для задачи RBAC.

РЕДАКТИРОВАТЬ: Мне предложили следующие определения упомянутых терминов, которые помогают концептуализировать их в полезной форме.Вкратце и в простейшем виде: Операции являются основными строительными блоками.Это те материалы, с которыми работают разработчики и только они.Разработчики составляют задач и над операциями. Роли состоят из задач, как набор задач.Роли и задачи - это то, с чем должны играть администраторы сайта - назначать и отзывать пользователей, но не операции.Это хороший способ посмотреть и понять эти сущности (роли, задачи и операции).У вас есть другой вариант осмысления по-другому?Любые комментарии будут оценены.

TIA!Боаз.

Ответы [ 3 ]

3 голосов
/ 13 марта 2012

Я бы сказал то же самое, что вы сделали в своем вопросе edit. Задача - это просто набор операций, которые может выполнять пользователь, которые имеют что-то общее. Таким образом, у вас есть, например, операции oList, oView, oCreate и oUpdate. Это операции, которые разработчик назначает действиям контроллера для управления доступом, где первые два имеют только чтение, а вторые два имеют доступ на запись в данные (вот что у них общего). Итак, теперь вы хотите объединить их с задачами tInspect и tManage, которые содержат по 2 операции: первая может отображать и просматривать, а вторая - создавать и обновлять. При желании вы можете сделать tInspect подзадачей из tManage, чтобы пользователь, имеющий tManage, мог просматривать, просматривать, обновлять и создавать, но обычно вы просто назначаете его роли обеим задачам.

2 голосов
/ 16 июля 2013

Что касается классификации ролей -> задач -> операций, то они, по сути, одно и то же, как вы можете видеть из кода, который они относятся к классу CAuthItem.Мы называем их по-разному, главным образом с точки зрения пользователя.

  • Операции используются только разработчиками, и они представляют самый высокий уровень разрешения.

  • Задачи построены поверх операций разработчиков.Они представляют собой базовые строительные единицы, которые должны использоваться администраторами RBAC.

  • Роли создаются поверх задач администраторами и могут назначаться пользователям или группам пользователей.

Выше рекомендация, а не требование.В общем, администраторы могут видеть только задачи и роли, а разработчики заботятся только об операциях и задачах.

Проверьте это: http://www.yiiframework.com/forum/index.php/topic/2313-rbac-confusion/page_p_16035#entry16035

1 голос
/ 09 июня 2012

если есть два пользователя: 1) администратор 2) пользователь

, поэтому мы устанавливаем роль updatePost для страницы обновления.
, а admin является родителем updatePost, чтобы администратор мог обновляться.пользователь имеет разрешение updateOwnPost.updateOwnPost является родителем updatePost с bizrule.so, если bizrule удовлетворяет, он может обновить

...