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