兩個laravel項目共享session Laravel實現單點登錄
創建兩個 Laravel 5.5 項目
composer 安裝 predis
composer require predis/predis
配置 Laravel 框架
1.配置 Laravel 框架下的 .env
文件中 Session 驅動、緩存驅動、APP_KEY
APP_KEY=base64:4nrVpUIRG3CBFRd+CvB+IUxATDUcGiagyfSRBi2VBG0= CACHE_DRIVER=redis //順道把緩存驅動也配置為 Redis 驅動 SESSION_DRIVER=redis
SESSION_LIFETIME=120
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=123456
REDIS_PORT=6379
注意:兩個項目配置統一驅動都為 Redis ,還有就是兩個項目的 `APP_KEY` 統一個 Key。否則不行!
2.配置 config\session.php
文件中 Key 為 domain 的 Value
'domain' => '.userdomain.com'; //你域名的根
測試
1.在 account-project
項目中 routes.php
中配置一條路由:
Route::get('/test-set-cache-session',function(){ Cache::put('cache1','cache1-value',1); Cache::put('cache2','cache2-value',1); Session::put('session1','session1-value',1); Session::put('session2','session2-value',1); return Session::getId(); }); //此條路由分別用 Cache 設置兩條數據和兩條 Session 數據,最后返回 SessionId
2.在 user-project
項目中 routes.php
中配置一條路由
Route::get('/test-get-cache-session',function(){ $data = [ 'cache1'=>Cache::get('cache1'), 'cache2'=>Cache::get('cache2'), 'session1'=>Session::get('session1'), 'session2'=>Session::get('session2'), 'session_id'=>Session::getId() ]; return $data; }); //此條路由分別獲取獲取兩條 Cache 數據和兩條 Session 數據及 SessionId ,最后返回數據
用瀏覽器打開兩個項目地址:
1.開設置 Session 的項目: http://account-project.userdomain.com/test-set-cache-session
#瀏覽器輸出
df7bec16715cbea5516697d8cd9f2a5f61db8af1
2.接着打開另外一個項目: http://user-project.userdomain.com/test-get-cache-session
#瀏覽器輸出 { "cache1": "cache1-value", "cache2": "cache2-value", "session1": "session1-value", "session2": "session2-value", "session_id": "df7bec16715cbea5516697d8cd9f2a5f61db8af1" }
很明顯兩個 SessionId 都一樣,說明你的兩個 Laravel 項目可以共享 Session 了。
http://havenshen.com/articles/2015/12/laravel-5.1-used-session-share.html