2011-12-19 11 views
1

私はisAuthorized()で非常に特有の問題があります。ここでは関数はAppControllerである:cakephp isAuthorized()が正しく動作しません

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

ので、基本的には、管理者はすべてのものへのアクセス権を持っています。これはadminプレフィックスルーティングを使用するまでOKです。 UsersController::admin_view()にアクセスすると「Unauthorized」というメッセージが表示されます。

まず、私は関数が単純に真を返すわけではありません。だから私はそれをテスト:

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

は、だから今は、関数が実際にtrueを返すことを知っているが、私はまだ、「不正な」エラーが発生します。これを引き起こす原因は何ですか?

ありがとうございます。

+0

isAuthorized関数を使用してコードを表示する必要があります – Julien

答えて

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