Несоответствие пароля компонента авторизации CakePHP - PullRequest
1 голос
/ 13 апреля 2010

Мне удалось заставить аутентификацию работать, следуя инструкциям на этой странице http://planetcakephp.org/aggregator/items/2604-create-simple-user-authentication-using-cakephp%E2%80%99s-auth-component

Как мне убедиться, что когда я нахожусь на странице регистрации, а пароль и подтверждение пароля, введенные пользователем, не совпадают, поле пароля будет заполнено значением, введенным пользователем, а не его хешированной версией

Спасибо
Тройник

Ответы [ 2 ]

1 голос
/ 16 апреля 2010

Вместо использования trickpassword у вас уже есть поле password_confirm с нехэшированным паролем. Вы можете использовать правила, подобные этим, чтобы проверить поле пароля с пустыми паролями ... А затем хэшировать password_confirm, чтобы убедиться, что они совпадают.

http://bin.cakephp.org/saved/42156

0 голосов
/ 13 апреля 2010

Я не думаю, что это необходимо выяснить из-за возможности ввода пароля. Также было бы трудно сделать это, так как вы использовали компонент Auth. Из поваренной книги :

Компонент auth автоматически хеширует поле пароля, если поле имени пользователя также присутствует в представленных данных

Это означает, что вы потеряете исходные данные пароля после того, как отправите их. Однако, я думаю, что есть хитрый способ приблизиться к этому с помощью javascript: добавление ввода скрытого типа в файл представления регистра, который имеет то же значение, но другое имя с $form->input('password');, затем вы можете получить его в действии для отображения в текстовом поле ввода пароля.eg

if ($this->data['User']['password'] == $this->Auth->password($this->data['User']['password_confirm'])) 
{
    $this->User->save($this->data);
    $this->Session->setFlash("your data has been saved.");
    $this->redirect("index");
}
else
{
    $this->data['User']['password'] = $this->data['User']['trickpassword'];
    /*i prefer this
    $this->data['User']['password'] = '';
    $this->data['User']['password_confirm'] = '';
    */
    $this->Session->setFlash('Password confirm fail!');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...