我開始在已驗證用戶和訪客用戶之間創建區別。但總是當我識別用戶並且它成功登錄時,它仍然返回true,當我使用Yii :: app() - > user-> isGuest。這裏是我正在使用的代碼:Yii身份驗證錯誤:登錄成功後,Yii :: app() - > user-> isGuest()總是返回true
if (Yii::app()->user->isGuest){
echo 'Welcome back Guest';
} else {
echo 'Welcome back '.Yii::app()->user->name;
}
我總是得到'歡迎回來客',無論我是否已登錄(成功)或沒有。如果我再次登錄,我收到了此消息。這裏是用戶識別碼。
class UserIdentity extends CUserIdentity {
/**
* Authenticates a user.
*/
private $_id;
public function authenticate() {
$user = Users::model()->findByAttributes(array('username' => $this->username));
if ($user === null)
$this->errorCode = self::ERROR_USERNAME_INVALID;
else if ($user->password !== $this->password)
$this->errorCode = self::ERROR_PASSWORD_INVALID;
else {
$this->_id = $user->id;
$this->setState('title', $this->username);
$this->setState('id', $user->id);
$this->errorCode = self::ERROR_NONE;
}
return !$this->errorCode;
}
public function getId() {
return $this->_id;
}
}
請幫我擺脫這個問題。
用戶是否真的在某處登錄? –
是的,當我用於登錄Yii :: app() - > user-> name時返回名稱,但是當我使用Yii :: app() - > user-> id時,它返回null。 –
嘗試使用Yii :: app() - > user-> getId();並檢查使用var_dump是什麼結果爲Yii :: app() - > user-> isGuest – Ninad