1

ユーザーがパスワードを変更できるようにする関数を書いています。

        public function change_password() {
        if ($this->request->is('post')) {
            debug($this->request->data);
            $tmpUsr = $this->User->find('first', array('conditions'=>array('user_id'=>$this->Auth->user('user_id'))));
            debug($tmpUsr);
            $tmpUsr['User']['password'] = AuthComponent::password($this->request->data['Change']['Confirmation']);
            if ($this->User->save($tmpUsr)) {
                debug("saved new password: " . $tmpUsr['User']['password']); // * after this debug is fired, the hash looks ok *
            } 
            else {
                debug("password was not saved");
            }
        }
    }

問題:

保存されたパスワードはハッシュ化されているように見えますが、試してみたところ、保存された値は正しいハッシュではないようです。

データベースでは、保存されたハッシュ文字列は、私がコメントした場所でデバッグした後は正しくないように見えますが、正しくありません。

問題になる可能性のあるアイデアはありますか?

ケーキチュートリアル(2.0)のログイン機能を使用しています

4

2 に答える 2

1

試す :

$this->Auth->password($this->request->data['Change']['Confirmation']);

代わりは。

APIドキュメントから「このメソッドは、 Security::hash()"

于 2012-12-31T13:09:16.097 に答える
0

私は答えを見つけましたが、それはばかげています:

  1. モデルには、ハッシュが行われる関数 beforeSave() があります。
  2. そのため、ハッシュは 2 回発生し (最初は関数 change_password() で)、次に beforeSave..

私のミス、お時間をいただき申し訳ありません..

于 2012-12-31T13:30:19.890 に答える