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;
}