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. 所以散列发生了两次(第一次在函数 change_password() 中),然后在 beforeSave..

我的错误,抱歉耽误您的时间。。

于 2012-12-31T13:30:19.890 回答