AuthCompornent ログイン後のリダイレクト編

なんでかわからないのでとりあえずメモ。
ごくごく、簡単なログイン認証のAuthCompornentを使用して、ログイン認証を作成します。
・Userを作成
Userには
id ,mail ,password,kind,created ,modified 
で構成されているテーブル。ユーザー登録はできる。パスワードもハッシュ化。ここまでは順調。(mailとpasswordで認証)
ここで、作成したユーザーが、ログインを行った場合、登録されているUserテーブルのkindフィールドを見る。
kind=0 の場合は/aaa/index にリダイレクトしたい。
kind=1の場合は/bbb/index  というように、ログインしたユーザーのkindフィールドの値でリダイレクト先を振り分けたい、というのが目的。ところが、下記のソースでbeforeFilter内で振り分けられるのかな、と思ったが、なんと
$user = $this->Auth->user();
ここで$userデータがどうも、取れてきていない…。
$user[‘User’][‘kind’]で値がとれてきてるのかなーって思ったんだけど、どうも$user自体が取得できていない。
logout()を呼び出して認証をクリアしてから、再度ログイン画面でログインを行うと、この$userデータがなんと、null。
なんか、ものすごおぉく些細な事でつまづいてるきがするんだけども。
ちなみに、現在users/loginを表示したときに現在の認証状態をクリアする処理がされていないので
一度ログインしちゃうとURLでlogoutを呼び出さないと認証状態が新しいものにならない…のかな。
原因としてはこっちに問題があるのかなあ。
認証をクリアした場合、対象のuserテーブルの内容が全部$this->Authから参照できるのかと思ってるんだけどなー。
さて風呂はいってくっか。

class UsersController extends AppController {
  var $name = 'Users';
  var $helpers = array('Html', 'Form');

  function beforeFilter() {
  	parent::beforeFilter();
    $this->Auth->allow('add');
    $user = $this->Auth->user();//AuthComponent
    $this->redirect('/members/add');
   }

  function login(){
  }
  function logout(){
    $this->Session->setFlash('ログアウトしました');
    $this->Auth->logout();
    $this->redirect(array('action' => 'login'));
  }

  function add() {
    if (!empty($this->data)) {
        $this->User->create();
        $this->User->save($this->data['User']);
        //登録ユーザーでその後の登録ページを遷移する
        if($this->data['User']['kind']==0){
        	$this->redirect('/companies/add');
        }elseif($this->data['User']['kind']==1){
        	$this->redirect('/members/add');
        }
    }
  }
}
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中