CakePHP1.2 Authコンポーネントを使った認証機能
春はまだこないのでしょうか?ichikawaです。
本日はCakePHPで簡単に認証機能を実現する、「Authコンポーネント」について軽くご紹介いたします。
Authコンポーネントを使用するための準備
とりあえずAuthコンポーネントを使う準備をしましょう。
class HogeController extends AppController {
var $components = array('Auth');
全てのコントローラで認証コンポーネントを利用するのなら、 AppController に追加でもいいですね。
そして、認証に使うテーブルを用意します。
デフォルトの認証に使われるテーブルとカラム、そしてその変更方法
デフォルトでは、認証のために「username」と「password」というフィールドを持つ「users」テーブルを使おうとします。
それを変更したい時は以下のようにします。
例えば、認証にAccountモデルを使いたい時は…
$this->Auth->userModel = 'Account';
認証で使うカラムを、「login_id」と「passwd」にしたい時は…
$this->Auth->fields = array('username' => 'login_id', 'password' => 'passwd');
ログインを行うアクションのデフォルトとその変更方法
ログインをするアクションは、デフォルトでは/users/loginです。
これを/account/loginに変更する時は以下のようにします。
$this->Auth->loginAction = array('admin' => false, 'controller' => 'account', 'action' => 'login');
もしくは…
$this->Auth->loginAction = "/account/login";
コントローラ中に二つのアクションを作成
認証に使うコントローラー内で、以下のアクションを作成します。 // 取りあえずの中身は空でOK
function login() {
}
function logout() {
$this->redirect($this->Auth->logout());
}
エラーメッセージの変更
ログイン失敗のエラーメッセージを変更は…
$this->Auth->loginError = "パスワードもしくはログインIDをご確認下さい。";
許可されていないアクションなどにアクセスしようとしたときに表示されるエラーメッセージの変更は…
$this->Auth->authError = "ご利用されるにはログインが必要です。";
ログイン後の追加処理をする場合
通常、 AuthComponent は認証を実行してすぐ、自動的にリダイレクトを実行します。
それを変更する場合には、コントローラー内を以下のように変更します
function beforeFilter() {
...
$this->Auth->autoRedirect = false;
}
function login() {
//ここから先はautoRedirect が false にセットされている時、つまり beforeFilter でだけ動作
if ($this->Auth->user()) {
// 追加したい処理を書く
}
}
このコードの login 関数は、beforeFilter で $autoRedirect を false にセットしない限り実行されません。
この login 関数のコードは、認証が試みられた後だけに実行されます。
ここはログインが成功したかどうか確定する最もよい場所です。
(公式マニュアルより)
まだまだ足りない所があるのですが、時間が来てしまったのでこちらに続きます。
皆様すてきな週末をお過ごしください。