两个laravel项目共享session Laravel实现单点登录
两个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