J'ai essayé de rechercher sur Internet comment écrire le code dans Yii framework 2.0 afin que l'utilisateur puisse se connecter avec les informations d'identification stockées dans la base de données et non depuis le tableau, préfixées dans models/User.php. Je sais comment faire ça dans Yii 1. Mais dans Yii 2.0, je ne sais vraiment pas comment faire ça. Étant donné que Yii 2.0 n'a pas encore été publié (seule la version bêta est disponible), je n'ai pas pu trouver de nombreux didacticiels Yii 2.0 sur Internet sur la connexion à la base de données.
Vous pouvez implémenter la gestion des utilisateurs de la base de données à l'aide d'extesions telles que https://github.com/amnah/yii2-user .
OR
Si vous souhaitez écrire votre propre script personnalisé pour gérer les utilisateurs, vous pouvez remplacer Yii2 identityClass.
Dans la section des composants de votre configuration, ajoutez:
'user' => [
'identityClass' => 'app\models\User',
'enableAutoLogin' => true,
],
Veuillez noter que votre modèle d'utilisateur DOIT METTRE EN ŒUVRE\yii\web\IdentityInterface
Voici l'exemple de la classe de modèle que vous pouvez utiliser pour implémenter l'authentification de la base de données
namespace app\models;
//app\models\gii\Users is the model generated using Gii from users table
use app\models\gii\Users as DbUser;
class User extends \yii\base\Object implements \yii\web\IdentityInterface {
public $id;
public $username;
public $password;
public $authKey;
public $accessToken;
public $email;
public $phone_number;
public $user_type;
/**
* @inheritdoc
*/
public static function findIdentity($id) {
$dbUser = DbUser::find()
->where([
"id" => $id
])
->one();
if (!count($dbUser)) {
return null;
}
return new static($dbUser);
}
/**
* @inheritdoc
*/
public static function findIdentityByAccessToken($token, $userType = null) {
$dbUser = DbUser::find()
->where(["accessToken" => $token])
->one();
if (!count($dbUser)) {
return null;
}
return new static($dbUser);
}
/**
* Finds user by username
*
* @param string $username
* @return static|null
*/
public static function findByUsername($username) {
$dbUser = DbUser::find()
->where([
"username" => $username
])
->one();
if (!count($dbUser)) {
return null;
}
return new static($dbUser);
}
/**
* @inheritdoc
*/
public function getId() {
return $this->id;
}
/**
* @inheritdoc
*/
public function getAuthKey() {
return $this->authKey;
}
/**
* @inheritdoc
*/
public function validateAuthKey($authKey) {
return $this->authKey === $authKey;
}
/**
* Validates password
*
* @param string $password password to validate
* @return boolean if password provided is valid for current user
*/
public function validatePassword($password) {
return $this->password === $password;
}
}
J'espère que cela vous serait utile. À votre santé :)
Vérifiez l'application avancée Yii2:
https://github.com/yiisoft/yii2-app-advanced
Il y a implémentation complète de l'inscription, de la connexion, de resetPassword pour les utilisateurs stockés dans la base de données.