CakePHPのAuthコンポーネント利用時、暗号化を独自に行う方法
自分用にメモ。
Authコンポーネントを利用していれば、ユーザー情報登録時にパスワードを自動的に暗号化してくれます。ですがその影響で、パスワードの英数字チェックや長さチェックができません。(validate実行時は暗号化済みのため。)
回避方法は色々あるようですが、
- Authコンポーネントによる暗号化をOFFにする
- データベースへ格納する直前に自分で暗号化する
で対処する方法をメモ。
暗号化を回避する方法自体は、以下で紹介されています。
AuthComponentのパスワード暗号化を無効にする方法
このままだと暗号化せずにデータベースへ格納されるので、UserモデルのbeforeSaveメソッド内でAuthコンポーネントを使って暗号化を行います。具体的には以下のようなコードで暗号化できます。
function beforeSave()
{
$this->data['User']['password'] = AuthComponent::password($this->data['User']['password']);
return true;
}
モデル内でAuthコンポーネントを使うので、あらかじめ以下のコードでコンポーネントを読み込んでおく必要があります。
App::import('Component', 'Auth');
ひとまずこの方法で進めてみるとします。