Yii framework 2.0でコードを記述する方法をインターネット上で検索して、ユーザーがmodels/User.phpにプレフィックスを付けた配列からではなく、データベースに保存された資格情報でログインできるようにしています。 Yii 1でそれを行う方法を知っています。しかし、Yii 2.0では、どうやってそれを行うのかわかりません。 Yii 2.0はまだリリースされていないので(ベータ版のみが利用可能です)、データベースでのログインに関するYii 2.0のチュートリアルをインターネットで見つけることができませんでした。
https://github.com/amnah/yii2-user のような拡張機能を使用して、データベースユーザー管理を実装できます。
OR
ユーザーを管理する独自のカスタムスクリプトを作成する場合は、Yii2 identityClassをオーバーライドできます。
構成のコンポーネントセクションに以下を追加します。
'user' => [
'identityClass' => 'app\models\User',
'enableAutoLogin' => true,
],
ユーザーモデルは\ yii\web\IdentityInterfaceを実装する必要があることに注意してください
データベース認証を実装するために使用できるモデルクラスの例を次に示します
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;
}
}
それがあなたの役に立つことを願っています。乾杯:)
Yii2の高度なアプリケーションを確認します。
https://github.com/yiisoft/yii2-app-advanced
DBに保存されているユーザーのサインアップ、ログイン、resetPasswordの完全な実装があります。