yii2获取未知属性:common \ models \ User :: password_hash

时间:2017-05-07 19:27:31

标签: php yii2 yii2-advanced-app

我在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);
}

然后我收到错误的用户名或密码消息。我做错了什么?

2 个答案:

答案 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对于重置忘记的密码非常有用。

我希望,你得到了答案。