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のプロパティをいじれば変更できます。

パスワードの暗号化方式

 デフォルトではSHA-1になっているようです。
 obAuthはmd5だったので少々詰まりました。

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']といった感じでまとめて呼び出せます。


関連記事:CakePHP1.2のTreeビヘイビア雑感