[CakePHP1.2.3]
管理画面などでpasswordを保存する場合、hash化する際には、Security:hashを使います。
Auth->passwordでもいいのですが、Authコンポーネントをロードしていないコントローラで新しく Authコンポーネントを読み込むと色々エラーが起こり易くなるので、 普通はSecurity:hashを使います。
それで、普通は以下のようにやれば良いのかと思うのですが、
[php]$this->data[‘Model’][‘password’] = Security:hash($this->data[‘Model’][‘password’])[/php]
これだとAuth->passwordと違うハッシュで保存されてしまいまい、ログイン時にマッチングしなくなってしまいます。
どうすればいいかというと、Auth::passwordのコードを覗いてみたら答えが書いてありました。
[php]$this->data[‘Model’][‘password’] = Security:hash($this->data[‘Model’][‘password’], null, true)[/php]
いや、null, trueなくても同じようにしてくれよ。。って感じです。 もしかするとこのcakephpのバージョンだけの現象かもしれません。
ちなみに、2.xでは普通にAuthComponent::password()のようにStaticに呼べます。
この記事は以下の環境に基づいて書いております。
cakephp1.2.3
php5.2.17