<?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應用安全可靠。