在實際的項目中,歷史項目使用thinkphp3.2開發,現在需要更新功能,更新功能的部分,擬使用laravel5.6進行開發。
問題描述其中需要解決幾個關鍵問題,其中之一便是用戶認證的問題。即在系統1只登錄后,系統2中自動識別其登錄信息。即本質需要解決:laravel與thiniphp共享session的問題。
方案設計session采用redis進行存儲。thinkphp與laravel共離訪問redis,根據相同的cookie,自動獲取存儲到redis中的認證用戶信息。
解決方案thinkphp開啟redis支持thinkphp3.2并不沒有集成session的redis支持,此時,我們使用php中的設置來開啟。在index.php中,我們加入以下兩行語句:
ini_set( session.save_handler , redis ini_set( session.save_path , tcp://redis:6379也可以將其加入到config.php配置文件中
此時, thinkphp在進行session存儲時,將以PHPREDIS_SESSION做為前綴進行存儲。
laravel開啟redislaravel開啟redis的方法相對來講稍微復雜一些。具體信息,需要參考官方文檔使用composer來安裝Predis并進行相關配置。
laravel獲取thinkphp的session由于laravel完全棄用了PHP的內置session。所以我們是沒有辦法能過$_SESSION來獲取到任何信息的(你甚至會得一個變量未定義的錯誤)。由于laravel的cookie進行了加密處理。所以,我們也不能用laravel自帶的cookie來獲取cookie信息。
具體實現的思路為:
1 獲取原生cookie。
2 接拼PHPREDIS_SESSION組成key
3 使用redis直接獲取key中存的值
...use Illuminate/Support/Facades/Redis; $cookie = $_COOKIE[ PHPSESSID $session = Redis::get( PHPREDIS_SESSION: . $cookie);
此$session即為thinkphp系統中的session值。
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !
相關推薦:
yii實戰之控制器與視圖交互
Laravel 中利用 GeoIP 獲取用戶地理位置信息
以上就是laravel5.6與thinkphp3.2使用redis共享session的方案的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答