兩個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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM