CakePHP:在提交失败时清除密码字段
问候,
我正在设置一个非常标准的注册表单,其中包含密码字段. 问题是,在提交失败后(由于空字段,格式不正确等),控制器重新加载注册页面,但密码字段包含先前输入的密码的哈希值.每次提交失败后如何将其清空? 视图: echo $form->password('Vendor.password',array('class' => 'text-input')); 控制器: Security::setHash('sha1'); $this->Auth->sessionKey = 'Member'; $this->Auth->fields = array( 'username' => 'email','password' => 'password' ); 非常感谢帮助,谢谢!
使用cakePHP密码验证可能会遇到另一个问题.
问题是蛋糕首先对密码进行哈希处理,然后进行验证,即使根据您的规则有效也可能导致输入失败.这就是密码返回到输入字段哈希而不是正常的原因. 要解决这个问题,请使用不同的名称,例如’tmp_pass’,而不是使用特殊字段名称’password’.这样,cakePHP Auth就不会自动对该字段进行哈希处理. 这是一个示例表单 echo $form->create('Vendor',array('action' => 'register')); echo $form->input('email'); echo $form->input( 'tmp_pass',array( 'label' => 'Password','type'=>'password' )); echo $form->end('Register'); 在您的供应商模型中,不要将验证规则分配给“密码”,而是将这些规则分配给“tmp_pass” var $validate = array('email' => 'email','password' => ... password rules... ); 变 var $validate = array('email' => 'email','tmp_pass' => ... password rules... ); 最后,在Vendor模型中,实现beforeSave(). 首先,查看数据是否有效(‘tmp_pass’将根据您的规则进行验证). 如果成功,请手动散列tmp_pass并将其放入$this-> data [‘Vendor’] [‘password’]然后返回true.如果不成功,则返回false. function beforeSave() { if($this->validates()){ $this->data['Vendor']['password'] = sha1(Configure::read('Security.salt') . $this->data['User']['tmp_pass']); return true; } else return false; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |