活跃用户在Yii中1,我有这个代码在API控制器设置活动的用户:Yii2设置API
Yii::$app->user->id = $my_userid;
但在Yii2,这是不允许,因为Yii的:: $ APP- > user-> id现在是只读的。
什么是等效命令来设置活动用户ID?
活跃用户在Yii中1,我有这个代码在API控制器设置活动的用户:Yii2设置API
Yii::$app->user->id = $my_userid;
但在Yii2,这是不允许,因为Yii的:: $ APP- > user-> id现在是只读的。
什么是等效命令来设置活动用户ID?
您需要使用setIdentity()方法API:
use Yii;
...
Yii::$app->user->setIdentity($user)
setIdentity()
:改变用户身份而不触及会话或 饼干。这最适用于无状态的RESTful API实现。
其中$user
应该是您的User
模型的有效实例。
如果您需要更改现有的用户,请使用switchIdentity()方法,而不是:
use Yii;
...
Yii::$app->user->switchIdentity($user)
此代码位于API控制器中...因此我如何才能为用户提供有效的用户实例?远程服务通过POST发送用户凭证。 – lilbiscuit
@lilbiscuit使用发送的凭证(例如'email'和'password')查找用户,然后将其传递给'setIdentity()'或'switchIdentity()'方法。 – arogachev
作品! 'user = User :: find() - > where('username =''。$ _POST ['username']。'''') - > one();' – lilbiscuit
请参阅此:stackoverflow.com/questions/30442609/how-to-change-current-user-in-yii2 –
由在Yii1中没有'Yii :: $ app',你的意思是'Yii :: app()'吗? – arogachev