#zend-framework #module #acl
#zend-framework #модуль #acl
Вопрос:
Я хочу установить разный доступ для разных модулей.
Я попробовал
$this->allow($role, $module, $controller, $action);
или
$this->allow($role, $module . ':' . $controller, $action);
Но, похоже, это не работает.
Есть идеи??
Ответ №1:
Для правильной настройки acl вам необходимо определить роли, ресурсы и разрешения.
Например.
$this->addRole(new Zend_Acl_Role('guests'));
$this->add(new Zend_Acl_Resource('default'))
->add(new Zend_Acl_REsource('default:index'), 'default');
$this->allow('guests', 'default:index', array('index', 'error'));
Это структура, основанная на модуле. Итак, сначала вы определяете роль. Затем вы определяете ресурс модуля, который используется по умолчанию. Индекс — это IndexController. И, наконец, вы устанавливаете действия, к которым пользователь типа guest должен иметь доступ в виде массива.
Вторая строка кода в вашем вопросе, похоже, в порядке, поэтому проблема может возникнуть где-то еще. Ознакомьтесь с некоторыми ресурсами:
Документация: Zend_Acl
Как это сделать: Zend Framework 1.8 учебное пособие 5 zend_acl с zend_auth и плагином контроллера
Комментарии:
1. спасибо, но у меня еще есть проблема! в моем проекте около 100 элементов управления, кстати, я должен добавить их все с помощью этого кода,
->add(new Zend_Acl_REsource('default:index'), 'default');
потому что яm checking current page access with this code ** if ($this->_acl->isAllowed($this->_currentRole, $this->_module .':'. $this->_controller, $this->_action)) ** or ** if ($this->_acl->isAllowed($this->_currentRole, $this->_controller, $this->_action)) ** it
потрясающий!2. Да, когда вы хотите управлять разрешениями, вы должны определить это, как в моем ответе. вы можете настроить библиотеку acl, как описано в инструкции