CakePHP パスワードを暗号化してDBに格納する
CakePHP 1.3
Cake PHPのマニュアルサイトなどをみると、usersテーブルを規則通りに、usersという名称で、usernameとpasswordというフィールド名で作成すれば、パスワードは自動的に暗号化されてDBに格納される、と書いています。
http://book.cakephp.org/ja/view/172/Authentication
しかし、usersコントローラーを作った状態でユーザーを追加してみると、パスワードが暗号化されていません。
あれあれ?と思いますが、これはAuthコンポーネントを追加しないと、パスワードを暗号化してくれないからなんですね。
しかし、ユーザーがない状態でAuthコンポーネントを追加すると、認証がかかってしまってログインしないとユーザーが追加できない、しかしユーザーがないのでログインしようがないというジレンマに陥ってしまいます。
そのため、最初は、すべてのアクションを許可するようにusersコントローラーに設定しておきましょう。
//users_controller.php内に下記を追加
var $components = array('Auth'); function beforeFilter() { parent::beforeFilter(); $this->Auth->allow('*'); }
その状態で、ユーザーをAddすれば、パスワードが暗号化されて、ユーザーを追加できます。
それが終わったら、function beforeFilter()は消去しましょう。