Списки контроля доступа

Я читал о (ролевом) контроле доступа Списки для предстоящего проекта, и у меня возникли некоторые проблемы с выяснением того, как это будет работать для меня.

В примерах, которые я видел, всегда говорится о разрешении и отказе в доступе к конкретным действиям контроллера/модели. Например: группа "Посетители" может read размещать сообщения, "Участники" могут read и edit, а "Администраторы" - create, read, update, delete.

Эти вещи кажутся мне слишком глобальными. В моей собственной ситуации (с поправкой на этот пример) будет большое количество групп, каждая из которых может только edit сообщений, принадлежащих к определенной категории (или какому-то другому критерию).

Единственный способ, который я могу придумать, чтобы заставить его работать на меня, — это создать новый ACO для сообщений для каждой категории:

posts_cat:1
posts_cat:2
posts_cat:3

А затем предоставить доступ к каждому из них по отдельности (что может быть королевским PITA для администраторов, которым нужен доступ ко всем)

Как шаблон ACL охватывает такие ситуации? Есть ли лучшие методы?

Со временем я буду реализовывать это на PHP, используя Cake, поэтому примеры с использованием PHP приветствуются, но не обязательны!


person nickf    schedule 19.10.2009    source источник


Ответы (1)


Одним из вариантов являются такие правила:

разрешить('ваша_роль', 'edit_post', 'черновик'); allow('your_role', 'edit_post', 'category1');

Или вы можете создать контроль доступа на основе атрибутов (который может быть основан на ролях). Это позволяет ролям выполнять действия над объектом (в более широком смысле) на основе атрибутов.

person koen    schedule 20.10.2009