По сути, вы должны переименовать поле пароля (например, в «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;
}