Php 尝试使用数据库[Yii2 Basic]中的用户登录时出现登录错误

Php 尝试使用数据库[Yii2 Basic]中的用户登录时出现登录错误,php,mysql,login,yii,yii2-basic-app,Php,Mysql,Login,Yii,Yii2 Basic App,默认设置为yii2 Basic,用户可以使用user,user和admin,admin登录。 但是,我需要应用程序可以使用我的sql数据库中的用户名和密码进行访问。在我的数据库中,我有一个名为ùser的表,其中包含用户名、密码等。我正在尝试遵循建议 但是,它会给出如下错误获取只写属性:app\models\User::password 这是我的代码: User.php->model类 有人知道我为什么会收到这个错误消息吗?以及如何解决此问题,以便用户可以使用数据库中的数据登录。 任何帮助都将不胜

默认设置为yii2 Basic,用户可以使用
user,user
admin,admin
登录。 但是,我需要应用程序可以使用我的sql数据库中的用户名和密码进行访问。在我的数据库中,我有一个名为
ùser
的表,其中包含用户名、密码等。我正在尝试遵循建议

但是,它会给出如下错误获取只写属性:app\models\User::password

这是我的代码:

User.php->model类 有人知道我为什么会收到这个错误消息吗?以及如何解决此问题,以便用户可以使用数据库中的数据登录。
任何帮助都将不胜感激。谢谢

您有密码设置器,但没有getter,请尝试为用户类添加getter

编辑(试试这个):


这是因为这种方法:

public function validatePassword($password) {
    return $this->password === sha1($password);
}
这是什么?这是完全错误的。应该是:

public function validatePassword($password)
{
    return Yii::$app->security->validatePassword($password, $this->password_hash);
}
public function setPassword($password)
{
    $this->password_hash = Yii::$app->security->generatePasswordHash($password);
}
编辑:和设置密码方法应为:

public function validatePassword($password)
{
    return Yii::$app->security->validatePassword($password, $this->password_hash);
}
public function setPassword($password)
{
    $this->password_hash = Yii::$app->security->generatePasswordHash($password);
}

你是说密码?你能解释一下代码到底是怎么写的吗?谢谢你!谢谢:D你真棒
public function validatePassword($password) {
    return $this->password === sha1($password);
}
public function validatePassword($password)
{
    return Yii::$app->security->validatePassword($password, $this->password_hash);
}
public function setPassword($password)
{
    $this->password_hash = Yii::$app->security->generatePasswordHash($password);
}