<?php // 创建ACL对象 $acl = new Zend_Acl(); // 定义角色 $acl->addRole(new Zend_Acl_Role('guest')); // 定义游客角色 $acl->addRole(new Zend_Acl_Role('user')); // 定义用户角色 // 定义资源 $acl->addResource(new Zend_Acl_Resource('index')); // 定义首页资源 $acl->addResource(new Zend_Acl_Resource('profile')); // 定义个人资料资源 // 为角色分配权限 $acl->allow('guest', 'index'); // 游客可以访问首页 $acl->allow('user', 'index'); // 用户可以访问首页 $acl->allow('user', 'profile'); // 用户可以访问个人资料 ?>
<?php class IndexController extends Zend_Controller_Action { public function init() { parent::init(); // 获取当前登录用户的角色 $role = Zend_Auth::getInstance()->getIdentity()->role; // 检查用户是否有权访问当前资源 if (!$acl->isAllowed($role, 'index', 'index')) { $this->_redirect('/error/not-allowed'); // 如果没有权限,重定向到错误页面 } } public function indexAction() { // 渲染首页视图 } } ?>
在上述代码中,控制器的init方法用于获取当前登录用户的角色,并调用ACL的isAllowed方法验证用户是否有权限访问指定的资源。如果用户没有权限,系统会将其重定向到一个错误页面。
无论是开发权限管理系统,还是保护敏感页面,Zend框架的ACL组件都能为您提供强大的支持,帮助确保您的Web应用安全可靠。