Вы можете столкнуться с другой проблемой в будущем при проверке пароля в cakePHP.
Проблема в том, что сначала торт хеширует пароли, , а затем выполняет проверку, что может привести к сбою ввода, даже если он действителен в соответствии с вашими правилами. Вот почему пароль возвращается в поле ввода, хэшированное вместо обычного.
чтобы исправить это, вместо использования специального имени поля «пароль», используйте другое имя, например «tmp_pass». Таким образом, 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');
В вашей модели Vendor не назначайте правила проверки для «пароля», а назначайте эти правила для «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;
}