настройка разного доступа для разных модулей

#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, как описано в инструкции