我已經看過其他類似的問題,雖然這一個(Yii2 user identity loss after page redirection)幾乎提出了同樣的問題,但沒有解決方案適用於我的情況。yii2登錄重定向後失去用戶身份
我已經創建了一個新的身份類,我實現了所有必要的方法並實現了IdentityInterface。請注意,它不會擴展ActiveRecord,而是擴展我自己的基礎Model類,該類不是從AR派生的。
一切似乎工作正常,我可以登錄並進行正確的身份驗證。我已經追蹤了代碼,我可以看到IdentityInterface :: validatePassword()和User :: login()被調用後,我的身份類在Yii :: $ app-> user中正確設置。然而,一旦登錄成功並且用戶被重定向,Yii :: $ app-> user將包含一個空的IdentityInterface,而不是緊接在重定向之前的那個。
return $this->goHome();
到:
在SiteController :: actionLogin(),我已經從修改的代碼
$tmp = $this->goHome();
// echo '<pre>';var_dump(Yii::$app->user);echo '</pre>';exit;
return($tmp);
和我可以看到的Yii :: $ APP->用戶仍然具有正確的身份直到return()語句。
誰能告訴我爲什麼我失去了我的身份?我追蹤了我能想到的所有東西:yii \ web \ Controller,yii \ base \ Controller,yii \ web \ Response,SiteController,yii \ web \ User等等......
任何幫助都是不勝感激。謝謝!
忘了提及我沒有看到存儲在Yii :: $ app-> session中的身份的任何信息。所以不確定通常在請求之間如何維護身份。我使用標準的基於主動記錄的身份來追蹤所有相同的代碼,即使登錄重定向後,它也能正常工作。但我再次看不到什麼不同:身份在那裏,直到SiteController :: actionLogin()返回,在這種情況下,它也在那裏。 – Laz 2015-01-26 18:08:57
是否有可能activerecord明確地做某事來保留請求之間的身份(我將不得不在我的代碼中複製)? – Laz 2015-01-26 18:47:57
您是使用Yii默認身份類還是實現自己的?如果你實現了自己的發佈代碼。否則發佈您的模型的代碼。 – 2015-01-26 23:09:06