2017-05-07 1 views
0

Je crée une page de connexion backend dans yii2 à ma base de données dans mysql. Dans ma base de données j'ai une table "konto" avec des colonnes: "nom d'utilisateur" et "mot de passe". J'utilise les fonctions yii2 par défaut, mais je reçois toujours "Obtenir la propriété inconnue: common \ models \ User :: password_hash" lorsque j'essaie de me connecter.yii2 Obtention d'une propriété inconnue: common models User :: password_hash

ce que je comprends est que la fonction dans le backend /common/models/User.php

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

est probablement faux. J'ai trouvé la question semblable et ai essayé de la changer à

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

mais alors j'obtiens le nom d'utilisateur d'erreur ou le message de mot de passe. Qu'est-ce que je fais mal?

+0

La table users doit contenir auth_key, password_hash et password_reset_token. donc vous devez ajouter ces colonnes dans la table de konto. –

Répondre

0

Yii avait besoin de colonnes supplémentaires. il faut donc ajouter ces colonnes à votre table de konto.

'auth_key', 
'password_hash, 
'password_reset_token', 

Yii va générer un mot de passe, tout en sauvegardant un nouvel enregistrement. auth_key sera utile pour les services de l'API REST et password_reset_token est utile pour réinitialiser le mot de passe oublié.

J'espère que vous avez la réponse.

0

Pas besoin d'ajouter de colonne dans la table konto. Veuillez ajouter public $ password_hash dans votre fichier modèle, comme ci-dessous.

class User extends \yii\db\ActiveRecord 
{ 
    /** 
    * @inheritdoc 
    */ 
    public $password_hash; 

    ..... 
    ..... 
}