2015-11-20 79 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