Zend framework Zend-控制器/操作ACL
在我的管理模块中,我有一个名为电子邮件的控制器,我希望大多数操作只能由登录的管理用户访问。然而,我希望有一个行动是可访问的任何人。(这是一种通过URL远程启动的电子邮件功能。)。目前,我将Zend_Auth与Zend_Acl一起使用,如下所示:Zend framework Zend-控制器/操作ACL,zend-framework,Zend Framework,在我的管理模块中,我有一个名为电子邮件的控制器,我希望大多数操作只能由登录的管理用户访问。然而,我希望有一个行动是可访问的任何人。(这是一种通过URL远程启动的电子邮件功能。)。目前,我将Zend_Auth与Zend_Acl一起使用,如下所示: if ($request->getModuleName() == 'admin') { // access resources (controllers) $acl->addResource('index'); $ac
if ($request->getModuleName() == 'admin') {
// access resources (controllers)
$acl->addResource('index');
$acl->addResource('reports');
$acl->addResource('email');
$acl->addResource('error');
// access roles
$acl->addRole(new Zend_Acl_Role('visitor'));
$acl->addRole(new Zend_Acl_Role('user'));
$acl->addRole(new Zend_Acl_Role('admin'));
// access rules
$acl->deny('visitor');
$acl->deny('user');
$acl->allow('admin');
$resouce = $request->getControllerName();
$action = $request->getActionName();
$identity = $auth->getStorage()->read();
if (is_object($identity)) {
$role = $identity->role;
} else {
$role = 'visitor';
}
if (!$acl->isAllowed($role, $resouce, $action)) {
$request->setModuleName('default')
->setControllerName('auth')
->setActionName('login');
}
}
如何更改上述代码以允许“访问者”执行/admin/email/process操作?这应该可以做到:
$oAcl->allow('visitor','email','functionname');
//or if you want to do both visitor and user
$oAcl->allow(array('visitor','user'),'email','functionname');
将此代码放在您已经编写的访问规则之后。这应该可以做到:
$oAcl->allow('visitor','email','functionname');
//or if you want to do both visitor and user
$oAcl->allow(array('visitor','user'),'email','functionname');
将此代码放在您已经编写的访问规则之后。您可以使用
Zend_Acl
创建角色层次结构,该层次结构允许您设置访问页面的最小角色,具有角色x或更高级别的任何人都可以访问该页面
$acl->addRole(new Zend_Acl_Role('visitor'));
$acl->addRole(new Zend_Acl_Role('user'), 'visitor');
$acl->addRole(new Zend_Acl_Role('admin'), 'user');
这样,任何具有管理员角色的人都可以访问访问者
和用户
有权访问的任何内容
您还可以将数组
作为参数而不是字符串传递
有关更多信息,您可以在上查阅Zend framework官方文档。您可以使用
Zend_Acl
创建角色层次结构,该层次结构允许您设置访问页面的最低角色,任何具有x或更高角色的人都可以访问该页面
$acl->addRole(new Zend_Acl_Role('visitor'));
$acl->addRole(new Zend_Acl_Role('user'), 'visitor');
$acl->addRole(new Zend_Acl_Role('admin'), 'user');
这样,任何具有管理员角色的人都可以访问访问者
和用户
有权访问的任何内容
您还可以将数组
作为参数而不是字符串传递
有关更多信息,您可以在上查阅Zend framework官方文档。另外,如果一个函数调用另一个未被明确允许的受保护函数,它会允许吗?另外,如果一个函数调用另一个未被明确允许的受保护函数,它会允许吗?