2010-04-13 36 views
1

我设法得到认证通过此网页上的教程http://planetcakephp.org/aggregator/items/2604-create-simple-user-authentication-using-cakephp%E2%80%99s-auth-componentCakePHP的身份验证组件的密码不一致

如何确保当我在注册页面我的工作,密码和确认密码的用户提供不匹配,密码字段将被重新填入用户输入的值,而不是它的散列版本?

感谢,
三通

+1

为什么你想在第一个地方?密码错误。密码字段被屏蔽,你看不到里面有什么。重新填充它有什么用处?无论如何,用户必须从头开始输入。 – deceze 2010-04-13 12:53:06

+0

事实上,如果某些表单提交出错,应该重置密码字段。不是吗? – 2010-07-22 08:09:46

回答

0

我不认为这是必要摸不着头脑,因为密码的功能input.Also这将是很难做到这一点,因为你已经使用了Auth component.From在cookbook:如果用户名字段也存在在提交的数据

中的验证组件会自动散列密码字段

这意味着你将但是,我认为有一个棘手的方法来处理javascript:在注册视图文件中添加一个隐藏的类型输入,它与$form->input('password');具有相同的值,但名称不同,那么您可以检索它在动作中要显示在密码输入文本中。

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!'); 
} 
+1

我更喜欢'$ this-> User-> invalidate('trickpassword','Password confirm fail!')',因为它更适合于表单验证语言,并允许您的表单验证逻辑返回其他同时出错。 – 2010-04-13 16:25:05

+0

@丹尼尔赖特,好记:) – Young 2010-04-14 08:09:53

1

而不是使用trickpassword,你已经有了密码确认字段与unhash密码。您可以使用类似于这些的规则来检查密码字段与空白密码...然后对hash_confirm进行哈希以确保两者相同。

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