YII2自動(dòng)登錄Cookie總是失效的解決方法
前言
最近做Yii2自動(dòng)登錄功能,發(fā)現(xiàn)即使開(kāi)啟了Yii2的自動(dòng)登錄配置功能,瀏覽器關(guān)閉后,再次打開(kāi)瀏覽器還是處于非登錄狀態(tài)。
網(wǎng)上查詢資料基本沒(méi)有相同情況。
查詢登錄源碼:
protected function sendIdentityCookie($identity, $duration)
{
$cookie = new Cookie($this->identityCookie);
$cookie->value = json_encode([
$identity->getId(),
$identity->getAuthKey(),
$duration,
], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
$cookie->expire = time() + $duration;
Yii::$app->getResponse()->getCookies()->add($cookie);
}
打印cookie變量發(fā)現(xiàn)內(nèi)容沒(méi)有任何問(wèn)題。復(fù)制代碼去其他控制器執(zhí)行也是毫無(wú)問(wèn)題。
查看瀏覽器,Yii2設(shè)置的sessionID也是正常的,也就是cookie只是這里設(shè)置不成功。
既然,系統(tǒng)沒(méi)問(wèn)題,瀏覽器沒(méi)問(wèn)題,那么就是傳輸過(guò)程有問(wèn)題。
后來(lái)終于發(fā)現(xiàn):原來(lái)在調(diào)用$model->login()登錄方法過(guò)后,我直接輸出json數(shù)據(jù)到瀏覽器,并且在后面有exit方法,直接阻止了控制器繼續(xù)執(zhí)行。
所以,yii2執(zhí)行到exit處就完了,導(dǎo)致頭信息header也沒(méi)有被傳輸?shù)綖g覽器。所以瀏覽器根本沒(méi)有收到php設(shè)置cookie的命令。
總結(jié)
Yii2登錄或者需要設(shè)置cookie的控制器,千萬(wàn)不要exit or die,直接使用if else去判斷,不要打斷執(zhí)行。
好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Zend Framework教程之Bootstrap類用法概述
這篇文章主要介紹了Zend Framework教程之Bootstrap類用法,簡(jiǎn)單分析了Bootstrap的功能,定義,相關(guān)參數(shù)與使用方法,需要的朋友可以參考下2016-03-03
PHP file_get_contents函數(shù)讀取遠(yuǎn)程數(shù)據(jù)超時(shí)的解決方法
這篇文章主要介紹了PHP file_get_contents函數(shù)讀取遠(yuǎn)程數(shù)據(jù)超時(shí)的解決方法,本文直接給出解決方法代碼,需要的朋友可以參考下2015-05-05
PHP實(shí)現(xiàn)中國(guó)公民身份證號(hào)碼有效性驗(yàn)證示例代碼
這篇文章主要介紹了PHP實(shí)現(xiàn)中國(guó)公民身份證號(hào)碼有效性驗(yàn)證示例代碼,可以判斷身份證號(hào)碼的正確性,非常具有實(shí)用價(jià)值2017-05-05
Ajax提交表單時(shí)驗(yàn)證碼自動(dòng)驗(yàn)證 php后端驗(yàn)證碼檢測(cè)
Ajax提交表單時(shí)實(shí)現(xiàn)驗(yàn)證碼自動(dòng)驗(yàn)證,驗(yàn)證碼先檢測(cè)正確性,不正確則不提交表單,更新驗(yàn)證碼,php后端驗(yàn)證碼檢測(cè),感興趣的小伙伴們可以參考一下2016-07-07
thinkphp5 模型實(shí)例化獲得數(shù)據(jù)對(duì)象的教程
今天小編就為大家分享一篇thinkphp5 模型實(shí)例化獲得數(shù)據(jù)對(duì)象的教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10

