1. 程式人生 > >Thinkphp5.0 再進行api介面開發的時候,sesssion再同一個控制器不同的方法是無法獲取session的。

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等都是可以的。