0

へのAuthアクセスとユーザーコントローラーのアクションを許可したいのですが、使用するかどうかは問題ではありません。メッセージが表示されますが、正常に動作します。login()logout()add()$this->Auth->allow('logout');You are not authorized to access that location. login()add()

これは私の AppContoller.php です:

class AppController extends Controller {

    public $components = array(

        'Auth' => array(
            'authenticate' => array(
                'Form' => array(
                    'userModel' => 'User',
                    'fields' => array(
                    'username' => 'email', 'password' => 'password')
                    )

            ), 

            'loginRedirect' => array('controller' => 'users', 'action' => 'index'),
            'logoutRedirect' => array('controller' => 'pages', 'action' => 'display', 'landing')
        ), 'Session'
    );

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

}

これは、UsersController.php の関連部分です。

    public $helpers = array('Html', 'Form', 'Session');
    public $components = array('Session');


    public function beforeFilter() {

        parent::beforeFilter();
        $this->Auth->allow('logout');

    }
    public function logout() {
        $this->set('title_for_layout', 'Logout');
        $this->redirect($this->Auth->logout());
    }

誰かがここで問題を見ていますか? 私はあなたの助けに感謝します。

4

1 に答える 1

0

問題なくログアウト アクションにアクセスしているようですが、ログアウト リダイレクトによってセッションが破棄され、pageビューにリダイレクトされます。

ログインせずにページにアクセスできないようです。(ログインせずにURLにアクセスしてみることができます)

beforeFilter関数を次の場所に追加しますPagesController

public function beforeFilter(){
    parent::beforeFilter();

    $this->Auth->allow();
}

PagesController はデフォルトで CakePHP 2.2 に付属しています。持っていない場合は、他のコントローラーをコピーして貼り付け、この関数を追加して残りをすべて削除してください。

編集済み: PagesController が既に存在する場合は、 beforeFilter 関数を追加するだけです。

于 2012-12-14T10:51:33.467 に答える