29

01月2010年

CakePHP1.2 Authコンポーネントを使った認証機能

ichikawa 14:33 PM

  • はてなブックマークに登録
  • livedoorクリップに登録
  • Yahoo!ブックマークに登録
  • deliciousに追加

春はまだこないのでしょうか?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 関数のコードは、認証が試みられた後だけに実行されます。
ここはログインが成功したかどうか確定する最もよい場所です。 (公式マニュアルより

まだまだ足りない所があるのですが、時間が来てしまったので今日はこの辺で…
皆様すてきな週末をお過ごしください。

バシャログスタッフによるWebサイト制作サービス

トラックバック

このエントリーのトラックバックURL
http://c-brains.jp/cgi-bin/mt/###/2127
###はmt-tb.cgiに変更してください。

コメントを投稿

ページの先頭へ

POPULAR TAGS
  • バシャログスタッフによるWebサイト制作サービス

ARCHIVE

RECENT COMMENTS

toyama on 【Fireworks】あなたのワークスペース、どんなレイアウト?
> maki さん コメントありがとうございます。 レイヤー
maki on 【Fireworks】あなたのワークスペース、どんなレイアウト?
初期設定のまま、パネル1列で作業してました。。 今までレイヤ
tomo on [使える CSS テクニック] CSSで実現するプルダウンメニュー
sakai様 早速ご返答ありがとうございます。 子供がho
sakai on [使える CSS テクニック] CSSで実現するプルダウンメニュー
>RodMond さん コメントありがとうございます。 自
RodMond on [使える CSS テクニック] CSSで実現するプルダウンメニュー
すみません解決しました(汗) ゴーストを覚えられていたみた