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

CakePHP
スポンサーリンク

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

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

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

環境

  • CakePHP1.3.8
  • CakePHP標準の認証コンポーネント(Auth)を使用

考え方

  • 認証コンポーネント(Auth)は自動でリダイレクトしてくれるので、まずリダイレクト機能を抑える
  • リダイレクト機能を抑えた上で、手動でリダイレクト先を指定する

リダイレクトを抑える

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 "ログイン失敗";
}
}
}“`