1. 程式人生 > 實用技巧 >高階-11分散式session和單點登入

高階-11分散式session和單點登入

一、分散式session問題

兩個方面的問題。

1、叢集下多個服務節點之間session不同步問題(多個伺服器之間session儲存不一樣)

2、分散式下多個服務之間session不共享問題(瀏覽器無法拿到另一個域名下的session)

解決方案① 叢集下服務節點間session不同步問題

統一儲存,SpringSession

解決方案② 分散式下多個服務間session不共享問題

放大作用域(放在統一域名下)

  • 沒有統一域名的就不行了,比如網易遊戲和網易郵箱無法放在同一個域名下

二、SpringSession

>>>官方文件<<<

maven依賴-->指定session儲存(redis)-->配置redis連結-->註解開啟SpringSession功能

三、單點登入

3.1 簡單Demo

>>> 於雪裡SSO <<<

更改host檔案,模擬多域名環境

打包啟動服務

// 在pom檔案所在最外層(三個小服務外面)路徑下打包
// 清理-打包  跳過測試
$ mvn clean package -Dmaven.skip.test=true

// 在小服務target目錄下jar檔案處啟動,指定埠
$ java -jar xxl-sso-server-1.1.1-SNAPSHOT.jar --server.port=8081

// 打包安裝到倉庫
$ mvn install

3.2 單點登入流程

四、附錄

// 獲取session和cookie的方法
public void test (HttpSession httpSession, @CookieValue(value = "sso_token",required = false) String sso_token){}

// 放在session中的只是一串令牌,在後端頁面(thymeleaf、jsp)中可以直接呼叫session.value
// 但是在前後端分離專案中不能直接獲取,只能通過介面向後端查詢