2011-12-19 61 views
1

我有一個非常奇怪的問題isAuthorized()。這裏是AppController功能:cakephp isAuthorized()不能正常工作

public function isAuthorized() { 
    if ($this->Auth->user('role') == USR_ADMIN) { 
     return true; 
    } 
    return false; 
} 

所以基本上,管理員可以訪問所有內容。這工作正常,直到使用管理員前綴路由。當訪問UsersController::admin_view()時,我收到「未經授權」的消息。

所以首先,我雖然該函數根本沒有返回true。所以,我測試了它:

public function isAuthorized() { 
    if ($this->Auth->user('role') == USR_ADMIN) { 
     printf ("returns true"); exit; 
     return true; 
    } 
} 

所以,現在我知道該函數實際上返回true,但我仍然得到「未授權」的錯誤。什麼可能導致這個?

謝謝。

+0

您必須使用isAuthorized函數顯示代碼 – Julien 2011-12-19 23:31:30

回答

1

我解決了「問題」。

public function isAuthorized() { 
    if (in_array($this->action, $this->userAllowed)) { 
     return true; 
    } 

    parent::isAuthorized(); 
} 

parent :: isAuthorized()是因爲我沒有返回它的問題。一個簡單的return parent::isAuthorized()修復了這個問題。

愚蠢的,我知道,但這件事讓我感到困惑了好幾個小時。

+0

即使在包含'$ uses = array('User')後,我也無法從'User'模型訪問'isAuthroized()'中的'User :: USER_ADMIN'。 );',這是一個合法的調用,或者我必須明確導入模型? – Ish 2012-06-12 21:44:48