我在yii2中将后端登录页面设置为mysql中的数据库。在我的数据库中我有桌子" konto"列:"用户名"和#34;密码"。我使用默认的yii2功能,但我仍然得到"获取未知属性:common \ models \ User :: password_hash"当我试图登录时。
我所理解的是backend / common / models / User.php中的函数
public function validatePassword($password)
{
return Yii::$app->security->validatePassword($password, $this->password_hash);
}
可能是错的。我发现了类似的问题并尝试将其更改为
public function validatePassword($password)
{
return $this->password === Yii::$app->security->generatePasswordHash ($password);
}
然后我收到错误的用户名或密码消息。我做错了什么?
答案 0 :(得分:2)
无需在konto表中添加列。 请在模型文件中添加public $ password_hash,如下所示。
class User extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public $password_hash;
.....
.....
}
答案 1 :(得分:0)
Yii需要一些额外的列。所以必须将这些列添加到您的konto表中。
Dim dt as DataTable = ' Results of some query
Dim samples As New List(Of Sample)
If dt.Rows.Count > 0 Then
samples = (From dr In dt.AsEnumerable() _
Select New Sample() _
With {.Field1 = IIf(String.IsNullOrEmpty(dr.Field(Of String)(0)), "Missing Field1", dr.Field(Of String)(0)) _
.Field2 = IIf(String.IsNullOrEmpty(dr.Field(Of String)(1)), "Missing FIeld2", dr.Field(Of String)(1))} _
).ToList()
End If
Yii将生成密码哈希,同时保存新记录。 auth_key对REST API服务很有用,而password_reset_token对于重置忘记的密码非常有用。
我希望,你得到了答案。