CakePHP auth组件密码不一致

时间:2010-04-13 10:03:48

标签: cakephp

我按照本页http://planetcakephp.org/aggregator/items/2604-create-simple-user-authentication-using-cakephp%E2%80%99s-auth-component

中的教程设法让身份验证工作

如何确保当我在注册页面中,并且用户提供的密码和确认密码不匹配时,密码字段将重新填充用户输入的值而不是哈希版本的密码字段?

谢谢,
三通

2 个答案:

答案 0 :(得分:1)

您没有使用trickpassword,而是已经使用未使用密码的password_confirm字段。您可以使用与这些相似的规则来检查密码字段中的空白密码...然后散列password_confirm以确保两者相同。

http://bin.cakephp.org/saved/42156

答案 1 :(得分:0)

由于密码输入功能,我认为没有必要弄清楚这一点。由于您使用了Auth组件,因此很难做到这一点。从cookbook开始:

如果提交的数据中也存在用户名字段,则auth组件将自动对密码字段进行哈希

这意味着您在提交之后将丢失原始密码数据。但是,我认为使用javascript进行处理是一种棘手的方法:在寄存器视图文件中添加隐藏类型输入,该文件具有相同的值,但名称与$form->input('password');,然后您可以在操作中检索它以在密码输入text.eg

中显示
if ($this->data['User']['password'] == $this->Auth->password($this->data['User']['password_confirm'])) 
{
    $this->User->save($this->data);
    $this->Session->setFlash("your data has been saved.");
    $this->redirect("index");
}
else
{
    $this->data['User']['password'] = $this->data['User']['trickpassword'];
    /*i prefer this
    $this->data['User']['password'] = '';
    $this->data['User']['password_confirm'] = '';
    */
    $this->Session->setFlash('Password confirm fail!');
}