首頁 >後端開發 >php教程 >laravel5.6與thinkphp3.2使用redis共享session的方案

laravel5.6與thinkphp3.2使用redis共享session的方案

不言
不言原創
2018-07-07 17:06:462154瀏覽

這篇文章主要介紹了關於laravel5.6與thinkphp3.2使用redis共享session的方案,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

在實際的專案中,歷史專案使用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開啟redis

laravel開啟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中文網!

相關推薦:

#

以上是laravel5.6與thinkphp3.2使用redis共享session的方案的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn