0

Cakephp プロジェクトにログイン/ログアウト機能を追加していますが、ログインまたはログアウトすると次のエラーが発生します。

Error: 認可アダプタ「Controller)」が見つかりませんでした。エラー: 内部エラーが発生しました。

スタックトレース CORE\Cake\Controller\Component\AuthComponent.php 376行目 → AuthComponent->constructAuthorize() CORE\Cake\Controller\Component\AuthComponent.php 326行目 → AuthComponent->isAuthorized(array) [内部関数] → AuthComponent- >startup(UsersController) CORE\Cake\Utility\ObjectCollection.php 130行目 → call_user_func_array(array, array) [内部関数] → ObjectCollection->trigger(CakeEvent) CORE\Cake\Event\CakeEventManager.php 246行目 → call_user_func(array) , CakeEvent) CORE\Cake\Controller\Controller.php 671 行目 → CakeEventManager->dispatch(CakeEvent) CORE\Cake\Routing\Dispatcher.php 183 行目 → Controller->startupProcess() CORE\Cake\Routing\Dispatcher.php 行161 → Dispatcher->_invoke(UsersController, CakeRequest, CakeResponse) APP\webroot\index.php 92行目 → Dispatcher->dispatch(CakeRequest, CakeResponse)

ここに私のAppController.phpがあります

class AppController extends Controller {
    public $components = array(
        'Session',
        'Auth'=>array(
            'loginRedirect'=> array('controller'=>'users', 'action'=>'index'),
            'logoutRedirect'=> array('controller'=>'users', 'action'=>'index'),
            'authError' =>"You can't access that page",
            'authorize'=> array('Controller)')
        )

    );
    //determines what logged in users have access to
    public function isAuthorized($user){
        return true;
    }
    //determines what non-logged in users have access to
    public function beforeFilter(){
        $this->Auth->allow('index','view');
        $this->set('logged_in', $this->Auth->loggedIn());
        $this->set('current_user', $this->Auth->user());
    }


}

ここに私のUsersController.phpがあります

class UsersController extends AppController {
    public $name = 'Users';

    public function beforeFilter(){
        parent::beforeFilter();
        $this->Auth->allow('add');
    }

    public function login(){
        if($this->request->is('post')){
            if($this->Auth->login()){
                $this->redirect($this->Auth->redirect());

            }else{
                $this->Session->setFlash('Your username and/or password is incorrect');
            }
        }
    }

    public function logout(){
        $this->redirect($this->Auth->logoutRedirect());
    }

同じエラーが発生した同様の投稿がいくつかあることに気付きましたが、Windows を使用している Linux マシンであるか、呼び出していない関数を呼び出していることが問題でした。

4

1 に答える 1

4

$components['Auth']配列を間違えました。'Controller)'代わりに書いた'Controller'(エラーメッセージが教えてくれる)。これが修正されたもの$componentsです:

public $components = array(
    'Session',
    'Auth'=>array(
        'loginRedirect'=> array('controller'=>'users', 'action'=>'index'),
        'logoutRedirect'=> array('controller'=>'users', 'action'=>'index'),
        'authError' => "You can't access that page",
        'authorize'=> array('Controller')
    )

);
于 2012-08-10T18:45:55.553 に答える