Home > Article > Backend Development > yii2 modifies the login module in the default demo to connect to the database
<?php namespace app\models; class User extends \yii\base\Object implements \yii\web\IdentityInterface { public $id; public $username; public $password; public $authKey; public $accessToken; private static $users = [ '100' => [ 'id' => '100', 'username' => 'admin', 'password' => 'admin', 'authKey' => 'test100key', 'accessToken' => '100-token', ], ]; /** * @inheritdoc */ public static function findIdentity($id) { return isset(self::$users[$id]) ? new static(self::$users[$id]) : null; } /** * @inheritdoc */ public static function findIdentityByAccessToken($token, $type = null) { foreach (self::$users as $user) { if ($user['accessToken'] === $token) { return new static($user); } } return null; } /** * Finds user by username * * @param string $username * @return static|null */ public static function findByUsername($username) { foreach (self::$users as $user) { if (strcasecmp($user['username'], $username) === 0) { return new static($user); } } return null; } /** * @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; } }
Change to the following code
<?php namespace app\models; use Yii; class User extends \yii\db\ActiveRecord implements \yii\web\IdentityInterface { public $id; public $username; public $password; public $authKey; public $accessToken; static private $AUTH_KEY = "authkey_test"; //remember me need this static private $ACCESS_TOKEN = "accesstoken_test"; // remember me need this public static function tableName() { return 'tb_admin'; } /** * @return \yii\db\Connection the database connection used by this AR class. */ public static function getDb() { return Yii::$app->get('db_admin'); } /** * Finds user by username * * @param string $username * @return static|null */ public static function findByUsername($username) { $user = User::find()->where(['username'=>$username])->asArray()->one(); if(isset($user)){ $user['authKey'] = self::$AUTH_KEY; $user['accessToken'] = self::$ACCESS_TOKEN; } return isset($user) ? new static($user) : null; } /** * 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; } /** * @inheritdoc */ public function getId() { return $this->id; } /** * @inheritdoc */ public function getAuthKey() { return $this->authKey; } /** * @inheritdoc */ public static function findIdentity($id) { $user = User::find()->where(['id'=>$id])->asArray()->one(); if(isset($user)){ $user['authKey'] = self::$AUTH_KEY; $user['accessToken'] = self::$ACCESS_TOKEN; } return isset($user) ? new static($user) : null; } /** * @inheritdoc */ public static function findIdentityByAccessToken($token, $type = null) { return null; } /** * @inheritdoc */ public function validateAuthKey($authKey) { return $this->authKey === $authKey; } }
The above introduces how to modify the login module in the default demo of yii2 to connect to the database, including the content. I hope it will be helpful to friends who are interested in PHP tutorials.