假设我有一个用户注册并且正在使用 Auth 组件(当然允许 /user/register)。
问题是,如果我需要在模型中设置 minLength 验证规则,它不起作用,因为 Auth 组件会对密码进行哈希处理,因此它始终大于我的 minlength 密码,即使它为空,它也会通过。
我该如何解决这个问题?提前致谢!
本质上,您必须重命名密码字段(例如,重命名为“pw”)以防止 Auth 组件自动对其进行哈希处理。然后,如果密码通过验证规则,则对其进行哈希处理并将哈希值保存在password
钥匙。这通常是在beforeFilter()
回调为本文描述。
还可以在控制器中验证数据并对密码进行哈希处理。通常不鼓励这种做法,但如果您刚刚开始使用 CakePHP,那么可能会更容易理解。
// this code would go after: if (!empty($this->data)
// and before: $this->User->save($this->data)
// validate the data
$this->User->set($this->data);
if ($this->User->validates()) {
// hash the password
$password_hash = $this->Auth->password($this->data['User']['pw'];
$this->data['User']['password'] = $password_hash;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)