AuthComponentでUsers Table以外を使う時
小ネタ。 Cake1.2.6
HogeConpornentがHogeモデルを使ってる場合、認証画面をそのままHoge::login()って作るとうまく行かない。デフォルトで、Userモデルを見てしまうから。アクセスしても/users/loginに飛ばされるし。
beforeFileterなどで、下記の設定が必要
$this->Auth->userModel = $this->modelClass;
モデル名を直接指定したければ、modelClassを固定の文字列にすればOK
ということで、よく設定する内容はこんな感じ。
//認証エラーメッセージ $this->Auth->loginError = 'ログインエラー。IDもしくはパスワードが違います。'; //アクセス権がない場合のエラーメッセージ 非表示 $this->Auth->authError = ' '; //認証するフィールド名 $this->Auth->fields = array( 'username' => 'loginid', 'password' => 'password' ); //アクセス制限しないアクション $this->Auth->allow(''); //ログイン後の遷移先を固定 $this->Auth->loginRedirect = array('controller' => 'adminpanels', 'action' => 'top'); //Authで利用するモデルをUser以外に指定 $this->Auth->userModel = $this->modelClass;
さらに、ログイン後の遷移を完全固定するため、リファラー情報をloginアクション内で消してます。
function login() { //ログイン後に強制的に$this->Auth->loginRedirectの画面にリダイレクトさせるため、リファラ情報を消す $this->Session->delete('Auth.redirect'); }