2010-08-02 44 views
0

我正在創建一個acl控制器插件,用於檢查用戶是否獲得資源授權並重定向到錯誤控制器來處理它。我該如何去做這件事?Zend Framework:如何編輯錯誤控制器來處理登錄需要/ auauthorized訪問錯誤?

+0

http://framework.zend.com/manual/en/zend.controller.plugins.html 看看錯誤控制器。您需要創建一個ErrorController類和一個具有默認名稱 - > errorAction的操作。然後檢查你的ACL插件的權限,如果拒絕轉發給這個控制器。 Theres幾種方式。 – Layke 2010-08-02 12:46:50

回答

1

請看SO上的這個問題:Help with Zend ACL。可以發現在devzone
另一個很好的ACL /驗證教程:Zend_Acl/Zend_Auth Example Scenario(該codelisting是不完整的,但看看註釋「缺失的部分」)

的重要組成部分,是在preDispatch插件:

$controller = $request->controller; 
$action  = $request->action; 
$module  = $request->module; 
$resource = $controller; 

if (!$this->_acl->isAllowed($role, $resource, $action)) { 
    if (!$this->_auth->hasIdentity()) { 
     $module  = 'default'; 
     $controller = 'login'; 
     $action  = 'index'; 
    } else { 
     $module  = 'default'; 
     $controller = 'error'; 
     $action  = 'privileges'; 
    } 
} 

$request->setModuleName($module); 
$request->setControllerName($controller); 
$request->setActionName($action); 

如果未登錄或權限不足,請求將被修改爲轉發到登錄頁面或錯誤控制器。

+0

這是一個很好的回答,我的其他問題:)從控制器插件重定向。使用'Zend_Controller_Action_HelperBroker :: getStaticHelper('Redirector')'。在這裏,我想知道如何編輯錯誤控制器來向用戶顯示錯誤消息,例如。如果他們試圖訪問未經授權的資源 – 2010-08-02 14:14:43