0017

CakePHPの認証コンポーネントで、ログイン成功時のリダイレクト先を指定する

CakePHPの認証コンポーネントで、ログイン成功時のリダイレクト先を指定する

2011.4.22

CakePHPはとても便利で、認証も簡単に実装することができます。ただ今回は、便利すぎる、全自動に近いが故にはまってしまいました。

CakePHPの認証コンポーネントで、ログインに成功すると自動でリダイレクトしてくれるのですが、そのリダイレクト先を変更したくても制御する方法が分からず、はまってしまいました。

忘れないようにメモしておきます。

環境

考え方

リダイレクトを抑える

beforeFilterを使います。リダイレクトを抑えたいController内(例えばapp/controller/users_controller.php)に、以下を記述します。

function beforeFilter() {
    $this->Auth->autoRedirect = false;        //リダイレクト機能をオフにする
}

これでログインしてもリダイレクトしません。

手動でリダイレクト先を指定する

記述的には普通ですが、一応コードを書いておきます。(例えばapp/controller/users_controller.phpのloginファンクション)

function login(){
    if($this ->data){    
        //ログイン試みる
        $user = $this->Auth->user();

        //ログインを試みた結果成功か、失敗か
        if(!empty($user)){
        //ログインが成功した時の処理
        $this->redirect('/posts'); //好きな場所へリダイレクト
        }else{
        //ログインが失敗した時の処理
        echo "ログイン失敗";
        }
    }
}