2015-11-20 54 views
0

活跃用户在Yii中1,我有这个代码在API控制器设置活动的用户:Yii2设置API

Yii::$app->user->id = $my_userid; 

但在Yii2,这是不允许,因为Yii的:: $ APP- > user-> id现在是只读的。

什么是等效命令来设置活动用户ID?

+0

请参阅此:stackoverflow.com/questions/30442609/how-to-change-current-user-in-yii2 –

+0

由在Yii1中没有'Yii :: $ app',你的意思是'Yii :: app()'吗? – arogachev

回答

2

您需要使用setIdentity()方法API:

use Yii; 

... 

Yii::$app->user->setIdentity($user) 

setIdentity():改变用户身份而不触及会话或 饼干。这最适用于无状态的RESTful API实现。

其中$user应该是您的User模型的有效实例。

如果您需要更改现有的用户,请使用switchIdentity()方法,而不是:

use Yii; 

... 

Yii::$app->user->switchIdentity($user) 
+0

此代码位于API控制器中...因此我如何才能为用户提供有效的用户实例?远程服务通过POST发送用户凭证。 – lilbiscuit

+0

@lilbiscuit使用发送的凭证(例如'email'和'password')查找用户,然后将其传递给'setIdentity()'或'switchIdentity()'方法。 – arogachev

+0

作品! 'user = User :: find() - > where('username =''。$ _POST ['username']。'''') - > one();' – lilbiscuit