两个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

posted @ 2018-01-26 17:49  丶老中医  阅读(3052)  评论(0编辑  收藏  举报
一切已经开始©2018 丶老中医