Thinkphp5.0 再進行api接口開發的時候,sesssion再同一個控制器不同的方法是無法獲取session的。

之前用thinkPHP5開發接口的時候,碰到這麼一個問題,用瀏覽器測試的api再用postman或者是腳本去訪問就會出現重新登錄的問題,後來看了一下session裏面的內容,發現腳本和postman沒有辦法訪問到對應的session,這樣就很難受,最後經過大佬指點,才知道了thinkPHP5裏面的session就是給瀏覽器用的,非瀏覽器的方式是沒有辦法訪問到那個session的,只能用cache的方式來代替session,僅此做一個記錄。
第一種:show方法是設置session,user是獲取session。這樣寫user方法在瀏覽器是可以獲取到session的,但是通過ajax是無法獲取的。

第一種:這個方式瀏覽器可以獲取到session,但是ajax卻獲取不到

public function show()
{
    Session("phone","18201025114");
}

public function user()
{
    exit(Session("phone"));
}

第二種:完美替代session解決方案,

public function showac()
{
    exit(Cache::get('phone'));
}

public function user()
{
    Cache::set('phone','182010251',3600);
    exit(Cache::get('phone'));
}

第三種:完美替代session解決方案,存到數據庫、memcache等都是可以的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章