所以我有zend_acl设置(基于此:Zend Framework:需要ACL的典型示例(。
我有一个用于设置权限的配置文件,但是我的问题是如何将多个角色访问到特定的控制器
; roles
acl.roles.guest = null
acl.roles.admin = null
acl.roles.company = null
acl.roles.user = null
acl.roles.super_admin = null
; resources
acl.resources.deny.all.all = guest
acl.resources.allow.index.all = guest
acl.resources.allow.index.all = company
所以问题在于这个:
acl.resources.allow.index.all = guest
acl.resources.allow.index.all = company
所以我的问题是如何进行设置以使多个角色可以访问。
我相信您可以调整代码以使其适合您。更改INI
acl.resources.allow.index.all = guest,company
然后从Zend框架更改代码:需要ACL的典型示例
protected function _addResources($resources) {
foreach ($resources as $permissions => $controllers) {
foreach ($controllers as $controller => $actions) {
if ($controller == 'all') {
$controller = null;
} else {
if (!$this->has($controller)) {
$this->add(new Zend_Acl_Resource($controller));
}
}
foreach ($actions as $action => $role) {
if ($action == 'all') {
$action = null;
}
if ($permissions == 'allow') {
if(strpos($role, ',') !== false) {
$multipleRoles = explode(',',$role);
$this->allow($multipleRoles, $controller, $action);
} else {
$this->allow($role, $controller, $action);
}
}
if ($permissions == 'deny') {
if(strpos($role, ',') !== false) {
$multipleRoles = explode(',',$role);
$this->deny($multipleRoles, $controller, $action);
} else {
$this->deny($role, $controller, $action);
}
}
}
}
}
}
我尚未测试此代码,但我的理解是它应该起作用。