假设我有一个用户注册并且我正在使用 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/

10-12 12:26
查看更多