Springboot+redis 實現session共享也是利用了cookie在域名,路徑相同的情況下可以共享內容。第一次請求會將SESSION保存在redis中,並將SESSIONID返回到瀏覽器的cookie中,第二次請求會攜帶上第一次請求的JSESSIONID。服務端拿到ID先到redis中查找是否存在此SSSSION,存在則拿出來用,不會再創建新的會話。
單點登錄可以用cookie+redis的方式,第一次登陸生成token,將token和用戶以鍵值對的方式存入redis。並將token寫入cookie返回到瀏覽器。以後每次請求cookie都會攜帶上token。服務端獲取token然後去redis中查找是否存在此用戶從而實現單點登錄。
也可以用session共享的方式,將token放入session中。其餘步驟和上面一樣。
兩者的前提都是設置cookie的domian相同,路徑爲“/”,區別是一個將token放在cookie中,放在cookie中服務端不用實現session共享。一個將token放在session中,服務端需要實現session共享,springboot實現session共享的方式很簡單,只需要引入spring-session-data-redis,spring-boot-starter-data-redis依賴,並在啓動類上加上@EnableRedisHttpSession註解即可。
通過Nginx配置的集羣或分佈式應用可以使用session共享來實現會話的統一管理。