CakePHP1.2のAuthコンポーネント雑感
CakePHP1.2がbetaになっているではないですか。
v1.1で非常に残念だったHABTMのsaveが改善されているという話を聞いて早速飛びつきました。同梱モジュールもかなり増えたようで、Treeビヘイビアとか便利そうな機能も増えているようです。その中でもとりあえず、
http://labo.queenweb.jp/?p=3
http://allweb.blog115.fc2.com/blog-entry-32.html
あたりを参考にしてまずはAuthコンポーネントを使ってみました。v1.1で使っていたobAuthというコンポーネントも十分シンプルで使いやすいのですが、今回のAuthはさらにコード量を削減できそうです。
使ってみて気付いたのは以下の点。
規約
ユーザ情報のモデル名は「User」
ユーザ名は「username」
パスワードは「password」
もちろん、cake/libs/controller/components/auth.phpのプロパティをいじれば変更できます。
loginメソッド
基本的な実装は、users_controllerにloginメソッド(空でいい)とビュー(ユーザ名とパスワードを入力するフォーム)を作るだけです。
function login(){ }
/users/login/にフォームを送信すると、Auth->login()が自動的に呼ばれてユーザ名とパスワードを認証してくれるようです。しかも/user/login/へのアクセス元をセッションに記憶しているようで、認証が終わるとリダイレクトで戻ってくれます。超便利。
logoutメソッド
これも2行で事足ります。
function logout(){ $this->Auth->logout(); $this->flash('ログアウトしました。', '/', 1); }
これで/users/logout/にアクセスすればログアウトしてトップページに戻ってくれます。
userメソッド
ログインユーザー情報を返します。app_controller.phpあたりで
function beforeFilter(){ $this->set('u', $this->Auth->user('username')); }
としておくと、ビューにて変数$uでユーザ名を呼び出せます。引数を指定しないと配列で返ってくるので、$u['User']['username']、$u['User']['password']といった感じでまとめて呼び出せます。