【CakePHP】AuthComponentについてのまとめ 【ざっくり基本編】
CakePHPの1.2.0.6311-betaでの話です。
CakePHPの1.2になってから、沢山の便利な機能の追加がありました。
そのうちのひとつのAuthComponentについて、まだ、日本語の資料が少ないので、まとめてみます。
2008/07/16追記
スパイスボックスさんのCakePHP 1.2 の AuthComponent でユーザ管理という記事から流れてくる人がいるみたいなので、
そこに書かれている誤った指摘に対する返信を追記
・・・app_controller の下準備の話が出ていないようだけど、それにあたるものを設定しないと動かないんじゃないのかなぁ。
このエントリー【CakePHP】AuthComponentについてのまとめ 【ざっくり基本編】は、最小限で手間でAuthCommponentを動かすためのエントリーです。
(”app_controller の下準備”といわれている作業はなくても、動きます。)
色々カスタマイズしたい場合、app_controller や各controllerのbeforeFilterに設定が必要です。
その辺は 【CakePHP】AuthComponentについてのまとめ その2【ちょっとしたコツ編】を見て頂けると、幸いです。
ちなみに$this->Auth->isAuthorized()のことも書いてあります。
そもそも isAuthorized が定義されていませんと言われるし
isAuthorized と beforeFilter をつくり、その beforeFilter の中に
$this->Auth->authorize = ‘controller’;
を追加した上で各コントローラに配置したらうまく行った。
この辺は、作成するアプリケーション仕様によると思います。
デフォルトは$this->Auth->authorize=’null’で、ログインしているか、否かで$this->Auth->isAuthorized()がtrueかfalseを返します。
$this->Auth->authorize = ‘controller’を指定した場合、controller内でisAuthorizedの条件を更に細かく指定できます。
参考:http://book.cakephp.org/view/172/authentication#authorize-396
aclとの組み合わせはSLYWALKERさんのエントリーがオススメ
AuthComponent + AclComponent + AclBehavior CakePHP1.2RC2
2008/07/16追記 終了
AuthComponentとは
CakePHP1.2から提供されるようになった認証用のComponentで、主な機能としては
- ログイン・ログアウト機能
- データベースのユーザIDとパスワード照合
- パスワードのハッシュ化
- 特定の条件のユーザのみをログインさせる
- ログイン失敗時のエラーメッセージ処理
- ログイン・ログアウト後のリダイレクト処理
などがあります。
実際に使ってみる
データベースUsersに’username’と’password’というそれぞれユーザ名とパスワードのフィールドおよびidがあるとします(modelも設定済み)。
まずは、controller側の処理をごく簡単に(ログイン・ログアウト・ユーザ追加)
class UsersController extends AppController {
var $name = 'Users';
var $helpers = array('Html', 'Form');
// AuthComponentの宣言
var $components = array('Auth');
//beforeFilterにログインしなくても良いactionを指定
function beforeFilter() {
$this->Auth->allow('add');
}
//ログイン
function login(){
}
//ログアウト
function logout(){
$this->Session->setFlash('ログアウトしました。');
$this->Auth->logout();
$this->redirect(array('action' => 'index'));
}
//ユーザ追加
function add() {
if (!empty($this->data)) {
$this->User->create();
$this->User->save($this->data['User']);
$this->redirect(array(’action’ => ‘index’));
}
}
}
ユーザログイン用のview(view/login.ctp)
<?php
echo $form->create('User', array('action' => 'login'));
echo $form->input('username');
echo $form->input('password');
echo $form->submit();
echo $form->end();
?>
ユーザ追加用のview(view/add.ctp)
<?php
echo $form->create('User', array('action' => 'add'));
echo $form->input('username');
echo $form->input('password');
echo $form->submit();
echo $form->end();
?>
たったこれだけ、
フォームからユーザIDとパスワードをPOSTするだけ(CakePHPのformヘルパーは何も宣言しないとPOST)でログイン・ログアウトの処理ができます。
ただ、実際に使ってみると、
- デフォルトの値と変えたい場合(ユーザ情報を保管するデータベースがUserっていうModel名じゃイヤ! カラム名もに’username’と’password’じゃない。 ログイン・ログアウトのactionがlogin・logoutじゃイヤ! など)
- ログインに失敗した際のメッセージは、どうやって処理するの?
- ユーザ登録時に再入力パスワードと一致しているかチェックしたい
- ログインしているかどうか、チェック仕方は?
- 現在ログインしているユーザ名とIDの取り出し方
とか、色々気になることがあります。
その辺は、「【CakePHP】AuthComponentについてのまとめ その2【ちょっとしたコツ編】」に続きます。
※おかしなところがありましたら、ご指摘頂けると幸いです。
その他、AuthComponentネタとしては、
【CakePHP】AuthComponentについてのまとめ その3【ログイン後のリダイレクト編】
【CakePHP】OpenIDをAuthComponentにトッピングしてみる
があります
参考にさせて頂いたサイト
http://www.webdevelopment2.com/cakephp-auth-component-tutorial-1/
http://www.littlehart.net/atthekeyboard/2008/01/08/simple-user-registration-in-cakephp/
http://wiki.kabturek.info/authcomponent
http://www.cpa-lab.com/tech/AuthComponent%e3%81%ae%e4%bd%bf%e3%81%84%e6%96%b9
Popularity: 43 %
by 赤がすき 






(2 投票, 平均: 4.5 中 5)



[...] 【CakePHP】AuthComponentについてのまとめ 【ざっくり基本編】 http://blog.ne2ma2.com/archives/160 [...]