guests
で処理する一般的に推奨される方法は何だろうと思っていYii2
ます。
たとえば、ログインしているユーザーがいる場合、次のような呼び出しで簡単に詳細を取得できます。
$user = Yii::$app->user->identity;
次に、利用可能にした詳細に応じて、以下のようなことを行うことができます。
$user->username;
$user->email;
ただし、guest
Yii::$app->user->identity
返品がある場合は明らかnull
です。
私の状況では、ユーザーがゲストかログインユーザーかを常に確認する必要があるため、さまざまな場所で次のようなコードを繰り返す必要があります。
if (Yii::$app->user->isGuest) {
$username = Yii::t('general', 'Guest');
} else {
$username = Yii::$app->user->identity->username;
}
...これをいたるところで行うのは明らかに保守性が低いため、チェックを実行せずにユーザー名を参照できるソリューションを考え出そうとしていますが、明らかに、必要な場所でゲストチェックを行いますセキュリティ上の目的ですが、私は保守可能なコードを書こうとしているので、ユーザー名などの情報が必要なだけの目的でソリューションを考え出そうとしています.
でこれを行うための推奨される方法が現在あるかどうかはわかりませんがYii2
、おそらくyii\web\User
クラスを拡張して以下のようなことをするようなことを考えました:
public function getIdentity() {
$identity = parent::getIdentity();
if (empty($identity)) {
$identity = new stdClass();
$identity->username = Yii::t('general', 'Guest');
}
return $identity;
}
それは私が望むものを達成するための賢明な方法ですか、それともより良い方法がありますか?