假设我有一个用户注册并且我正在使用 Auth 组件(当然允许/user/register)。
问题是如果我需要在模型中设置 minLength 验证规则,它不起作用,因为 Auth 组件对密码进行哈希处理,因此它总是比我的 minlength 密码多,即使它是空白的也能通过。
我该如何解决这个问题?提前致谢!
最佳答案
本质上,您必须重命名密码字段(例如,为“pw”)以防止 Auth 组件自动对其进行散列。然后,如果密码通过验证规则,则对其进行散列并将散列保存在 password
键下。这通常在 beforeFilter()
回调中完成,如 this article 所述。
还可以验证数据并在 Controller 中散列密码。这种做法通常是不鼓励的,但如果您刚开始使用 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;
}
关于authentication - minLength 数据验证不适用于 CakePHP 的 Auth 组件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2749192/