こんにちは。卓司です。
今回はCakePHP2系の認証でUserモデル以外を利用して認証する方法についてまとめました。
CakePHPの認証を素直に使う場合、userモデルを作成して認証を行うと思います。
認証チュートリアルはこちら(CakePHP 本家)
しかし、Userモデルとは別モデルで認証させたいという場合は以下のようにします。
※上記のチュートリアルを済ませている状態の環境で以下の対応を行います。
対象のModel(DBを含む), View, Controllerを作成
認証で利用するModel, View, Controllerを作成します。
例えば、今回はManagerモデルを利用して認証させるとした場合、チュートリアルで作成したUserモデルをコピーしてManagerモデルを作成します。
※同様にして、View, Controller, DBも作成します。
AppController修正
チュートリアルで作成したAppController.phpを以下の通り修正してください。
public $components = array(
'Session',
'Auth' => array(
// 認証時の設定
'authenticate' => array(
'Form' => array(
// 認証時に使用するモデル
'userModel' => 'Manager',
// 認証時に使用するモデルのユーザ名とパスワードの対象カラム
'fields' => array('username' => 'code' , 'password'=>'password'),
),
),
// ログイン失敗時に出力するメッセージを設定
'loginError' => 'パスワードもしくはログインIDをご確認下さい。',
// ログインしていない場合のメッセージを設定
'authError' => 'ご利用されるにはログインが必要です。',
// ログインに使用するアクションを指定
'loginAction' => array('action' => 'login'),
// ログイン後のリダイレクト先を指定
'loginRedirect' => array('controller' => 'posts', 'action' => 'index'),
// ログアウト後のリダイレクト先を指定
'logoutRedirect' => array('action' => 'login'),
),
);
これで、Managerモデルを利用して認証が行えます。
まとめ
モデルを指定して認証する方法はCakePHP1系とは少し違うみたいなので、2系を利用される方は是非参考にしてみてください。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。