Php 在yii2中保存用户密码失败
我试图更新用户密码,但无法保存 这是控制器代码:Php 在yii2中保存用户密码失败,php,yii2,yii2-advanced-app,yii2-user,Php,Yii2,Yii2 Advanced App,Yii2 User,我试图更新用户密码,但无法保存 这是控制器代码: public function actionChangepassword($id) { $model = new UserPass(); $user = $this->findModel($id); if ($model->load(Yii::$app->request->post())) { if ($model->validate()) { try
public function actionChangepassword($id) {
$model = new UserPass();
$user = $this->findModel($id);
if ($model->load(Yii::$app->request->post())) {
if ($model->validate()) {
try {
$user->setPassword($_POST['UserPass']['newpass']);
if (!$user->save()) {
Yii::$app->getSession()->setFlash('success', 'Password changed to ');
return $this->redirect(['indexi/'.$user->password]);
} else {
Yii::$app->getSession()->setFlash('error', 'Password not changed');
return $this->redirect(['index']);
}
} catch (Exception $e) {
Yii::$app->getSession()->setFlash('error', "{$e->getMessage()}");
return $this->render('changepassword', [
'model' => $model
]);
}
} else {
return $this->render('changepassword', [
'model' => $model
]);
}
} else {
return $this->render('changepassword', [
'model' => $model
]);
}
}
当我选中var\u dump($\u POST['UserPass']['newpass'])
时,它有一个值
当我尝试更改部件时,$user->setPassword($\u POST['UserPass']['newpass'])代码>
密码已保存但未哈希
怎么了
这是setpassword
功能
public function setPassword($password)
{
$this->password = Yii::$app->security->generatePasswordHash($password);
}
1)更改
$user->setPassword($_POST['UserPass']['newpass']);
public function setPassword($password)
{
$this->password = Yii::$app->security->generatePasswordHash($password);
}
到
2)更改
$user->setPassword($_POST['UserPass']['newpass']);
public function setPassword($password)
{
$this->password = Yii::$app->security->generatePasswordHash($password);
}
到
最好的方法是查看它是如何在高级模板中实现的。显示此操作的完整代码。我已更新了问题。如果您检查原始高级模板登录表单,我认为您不需要将密码另存为保存到密码\u散列中的密码。还要检查SiteController.phpNot中的密码重置操作是否令人讨厌,但是如果(!$user->save()){
似乎已将结果操作反转,您的?
public function setPassword($password)
{
return Yii::$app->security->generatePasswordHash($password);
}