Разрешен для одной роли (не для ролей, которые наследует роль)

#php #zend-framework #acl

#php #zend-framework #acl

Вопрос:

Я пытаюсь выяснить, имеет ли роль явный доступ к ресурсу, используя Zend Acl, но метод Zend Acl isAllowed проверяет не только роль, но и любые роли, которые наследует указанная роль, на что мне наплевать, я только хочу знать, разрешена ли роль сама по себе.

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

Ответ №1:

Обычно вы читаете настройки для ACL откуда-нибудь, скажем, из базы данных. Это то место, на которое вам следует обратить внимание. Вам все равно нужно написать это там.

Ответ №2:

Я думаю, вы неправильно смотрите на Zend_Acl. Вся система основана на родительском / дочернем

Если вам не нужны отношения родитель / потомок, вам придется определить каждое правило для каждой роли:

Гость может войти в систему, Гость не может выйти из системы

Пользователь может войти в систему, пользователь может выйти из системы

Или вы можете расширить Zend_Acl и создать свой собственный метод isExplicitAllowed().