<?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; } }
kann in den folgenden Code geändert werden
<?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; } }
Das Obige stellt vor, wie man das Anmeldemodul in der Standarddemo von yii2 ändert, um eine Verbindung zur Datenbank herzustellen, einschließlich der relevanten Aspekte. Ich hoffe, es wird für Freunde hilfreich sein, die sich für PHP-Tutorials interessieren.