我想知道通常推荐的处理方式是guests
什么Yii2
。
例如,当您有一个登录用户时,您可以简单地通过调用获取他们的详细信息,例如:
$user = Yii::$app->user->identity;
然后,您可以执行以下操作,具体取决于您为他们提供的详细信息:
$user->username;
$user->email;
但是,显然当我们有一个guest
Yii::$app->user->identity
return 时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;
}
这是实现我想要的可取的方法还是有更好的方法?