活躍用戶在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