我正在尝试设置一个表单以允许用户使用 CakePHP 2.3 更改他们的密码。正在使用的算法是河豚。我有以下三个字段:
<?php echo $this->Form->input('old_password', array('type' => 'password', 'autocomplete' => 'off')); ?>
<?php echo $this->Form->input('new_password', array('type' => 'password', 'autocomplete' => 'off')); ?>
<?php echo $this->Form->input('new_password_confirm', array('type' => 'password', 'autocomplete' => 'off', 'label' => 'Confirm Password')); ?>
这是我试图验证他们正确输入旧密码的代码:
$hash = Security::hash($this->request->data['User']['old_password'], 'blowfish');
$correct = $this->User->find('first', array(
'conditions' => array(
'User.id' => AuthComponent::user('id'),
'User.password' => $hash
),
'fields' => array('id')
));
问题是即使我正确输入了旧密码,Cake 也永远找不到用户,因为它似乎没有计算正确的哈希值。每次我使用相同的旧密码提交表单时,Cake 每次都会生成不同的哈希值。这可能是由于我对河豚/bcrypt 算法的工作原理缺乏了解,但我似乎无法弄清楚。
我在这里想念什么?