Мне нужно хеш и сохранить пароль с пользовательского ввода в форме входа в Yii. Если я получаю их через параметры POST, как это:Получение имени пользователя и пароля в параметрах POST при создании нового пользователя
$model->username=$_POST['User']['username'];
$model->password=crypt($_POST['User']['username']);// salt might be added
if($model->save())
$this->redirect(array('view','id'=>$model->id));
этот путь я разоблачить uncrypted пароль в запросе POST. Другого пути к ним непосредственно от входа в форме, как это:
public function actionCreate2()
{
$model=new User;
$model->username = $form->username;
$model->password = crypt($form->password);
if($model->save())
$this->redirect(array('view','id'=>$model->id));
$this->render('create',array(
'model'=>$model,
));
}
но не работает в моем случае с аутентификацией сохраненного пользователя. Функция аутентификации:
public function authenticate()
{
$users = User::model()->findByAttributes(array('username'=>$this->username));
if($users == null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
elseif ($users->password !== crypt($this->password, $users->password))
//elseif($users->password !== $this->password)
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
$this->errorCode=self::ERROR_NONE;
return !$this->errorCode;
}
Как сделать это надлежащим образом?
Чем больше неприятностей появились как я последовал предложить Самуил - сообщение проверяющих сигнализаций еще до того, я ничего вводить вместе с хэшированном паролем в поле ввода (см рисунка):.
Когда я еще ввести мой имя пользователя и мой пароль вместо «предложенного» и нажмите кнопку «Создать» форма посылается с не зашифрованной значения (от запроса POST нюхает):
Form Data view source view URL encoded
YII_CSRF_TOKEN:9758c50299b9d4b96b6ac6a2e5f0c939eae46abe
User[username]:igor23
User[password]:igor23
yt0:Create
но ничего на самом деле хранится в БД, ни шифрованных не uncrypted. ..
Какую ошибку вы получили? Вы пытались сбросить склепу пароля сохраненного пользователя с помощью склепа passowrod из формы входа? –
В 'authenticate' вы передаете хешированный пароль как соль, а при сохранении не пропускается соль, следовательно, ошибка. – topher