在Yii2中,您可以使用\ yii\web\User类中的identityInterface对象访问当前用户的标识界面,使用类似这样的内容
\Yii::$app->user->identity->id;
Run Code Online (Sandbox Code Playgroud)
有没有办法获取和设置其他参数(不扩展标识类)?
基本上相当于Yii 1.x getState(),以及存储和检索会话信息的setState()方法CWebUser
Yii::app()->user->setState("some_attribute",$value);
Yii::app()->user->getState('some_attribute',$defaultValue);
Run Code Online (Sandbox Code Playgroud)
Man*_*uer 24
好吧,似乎这是故意删除,以避免"混乱".请参阅https://github.com/yiisoft/yii2/issues/167.所以通过直接调用会话类来实现此目的的唯一方法.
\Yii::$app->session->set('user.attribute',$value);
\Yii::$app->session->get('user.some_attribute');
Run Code Online (Sandbox Code Playgroud)
因为它现在直接存储在没有前缀的会话中,所以最好使用标识符对键进行命名,user.xxxx以避免与应用程序的不同点处的某些其他键集冲突.
Raf*_*ler 10
向用户添加属性的最佳方法是在用户类中创建公共属性.
class Yiidentity extends ActiveRecord implements \yii\web\IdentityInterface{
public $awesomeAttribute = "foo";
}
Run Code Online (Sandbox Code Playgroud)
如何使用:
Yii::$app->user->identity->awesomeAttribute;
Run Code Online (Sandbox Code Playgroud)
在Yii2 \ Yii :: $ app-> user-> identity中包含identityClass的实例.所以,如果你想要一些与identityClass相关的数据 - 就像使用identityClass的实例一样.