CakePHPのAuthコンポーネント
便利。
だけど、パスワード暗号化が独特なのでちょっとTips。
AuthComponent::authenticate にパスワード変換ロジックをセットすると
それが呼ばれるようになる。
面倒なのでコンポーネントとして作成。
条件としては、hashPasswordsというメソッドを用意するだけ。
引数はcontroller::data (ヘルパーで作成したFORMの値?)が渡される
class PasswordComponent extends Object { var $model = 'Login'; var $col = 'password'; function hashPasswords($data) { if (isset($data[$this->model][$this->col])) { $data[$this->model][$this->col] = $this->crypt($data[$this->model][$this->col]); } return $data; } function crypt($password) { return sha1($password); } }
しかしこれをやってハマりました。
AuthComponent::startup() 内で変換後のデータをcontroller::dataに上書きするので
カラム名を同じにしてしまうと元のパスワードがとれなくなってしまう。。。
POST時の名前と返還後の名前を
変換ロジック内で変えた方がいいのかもしれません。。。
class PasswordComponent extends Object { var $model = 'Login'; var $org_col = 'org_password'; var $col = 'password'; function hashPasswords($data) { if (isset($data[$this->model][$this->org_col])) { $data[$this->model][$this->col] = $this->crypt($data[$this->model][$this->org_col]); } return $data; } function crypt($password) { return sha1($password); } }