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 "ログイン失敗"; } }
}
当サイトはAmazonアソシエイト・プログラムの参加者です。