via start instalar framework español descargar composer como php yii yii2 yii2-advanced-app yii2-basic-app

php - start - después de hacer o cambiar la contraseña El usuario no inicia sesión en Yii2



yii2 install (2)

Está utilizando el mismo nombre para el atributo que almacena el hash de contraseña y la contraseña sin formato.

Cambie el atributo hash de contraseña a algo como passwod_hash o el atributo raw password a algo como raw_password y modifique el código en consecuencia para manejarlo.

después de crear o editar la contraseña del usuario Tengo un error de inicio de sesión ''Nombre de usuario o contraseña incorrectos'' en Yii2

iniciar sesión con el usuario ''admin'' es trabajo (hago user admin con actionCreate1)

auth_key: kYm0pvYAXY4IzuV7eYgGgtjSqoxxMNUL password: $2y$13$QqsbMW3ErXwWOPad3abDYOPzh5XLwuEvQKBhZGEEDoT0Av5l0bE2S

pero hago usuario o edito la contraseña, en la página de inicio de sesión tengo un error: ''Nombre de usuario o contraseña incorrectos''

Creo que el problema de beforeSave in Model USER

Tabla de usuario:

id int auth_key text username text password text

actionCreate: no es trabajo

public function actionCreate() { $model = new User(); if ($model->load(Yii::$app->request->post())) { if($model->save()) { $model->img = UploadedFile::getInstance($model, ''img''); if($model->img !== null) $model->upload(''img'',$model->id); $model->save(); } return $this->redirect([''view'', ''id'' => $model->id]); } else { return $this->render(''create'', [ ''model'' => $model, ]); } }

actionCreate1: es un BUEN TRABAJO

public function actionCreate() { $model = new User(); if ($model->load(Yii::$app->request->post())) { $model->username = Yii::$app->request->post(''User'')[''username'']; $model->password = Yii::$app->request->post(''User'')[''password'']; $model->save(); return $this->redirect([''view'', ''id'' => $model->id]); } else { return $this->render(''create'', [ ''model'' => $model, ]); } }

Usuario modelo:

public function beforeSave($insert) { if($this->password) { $this->setPassword($this->password); } if($insert) { $this->generateAuthKey(); } return parent::beforeSave($insert); } public function setPassword($password) { $this->password = Yii::$app->security->generatePasswordHash($password); } public function generateAuthKey() { $this->auth_key = Yii::$app->security->generateRandomString(); } /** * @param $password * @return bool */ public function validatePassword($password) { return Yii::$app->security->validatePassword($password, $this->password); } /** * @inheritdoc */ public static function findIdentity($id) { return static::findOne([ ''id'' => $id ]); } public static function findIdentityByAccessToken($token, $type = null) {} /** * @param $username * @return null|static */ public static function findByUsername($username) { return static::findOne([ ''username'' => $username, ]); } /** * @inheritdoc */ public function getId() { return $this->id; } /** * @inheritdoc */ public function getAuthKey() { return $this->auth_key; } /** * @inheritdoc */ public function validateAuthKey($authKey) { return $this->auth_key === $authKey; }


para arreglar este problema.

paso1: cambiar antes de guardar Modelo USUARIO

public function beforeSave($insert) { if($insert) { if($this->password) { $this->setPassword($this->password); } $this->generateAuthKey(); } return parent::beforeSave($insert); }

paso2: pequeño cambio en el usuario de la actualización

In the first code $password = $model->password; if(Yii::$app->request->post(''User'')[''password''] != null) { $model->password = Yii::$app->security->generatePasswordHash(Yii::$app->request->post(''User'')[''password'']); } else { $model->password = $password; }