分布式6大核心专题_分布式Session
生活随笔
收集整理的這篇文章主要介紹了
分布式6大核心专题_分布式Session
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、Session存在服務器上還是tomcat中?
- 1. 創建springboot項目
- 2. 啟動項目
- 3. 調用登錄接口
- 4. 調用獲取用戶信息接口
- 5. 重啟tomcat調用獲取用戶信息接口
- 二、Session與Cookie的關系
- 三、傳統Session
- 3.1. 啟動項目
- 3.2. 瀏覽器測試
- 四、分布式Session解決方案
- 4.1. Spring Session + Redis
- 4.2. Token + Redis
- 4.3. Token + JWT
- 五、方案區別
一、Session存在服務器上還是tomcat中?
案例演示流程:
1.創建springboot項目
2.啟動項目
3.調用登錄接口
4.調用獲取用戶信息接口
5.重啟tomcat調用獲取用戶信息接口
1. 創建springboot項目
pom
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>測試案例
package com.gblfy.distributed.session.controller;import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpSession;@RequestMapping("/user") @RestController public class UserController {@GetMapping("/login")public String login(@RequestParam String username,@RequestParam String password,HttpSession session){//賬號密碼正確session.setAttribute("login_user", username);return "登錄成功";}@GetMapping("/info")public String info(HttpSession session) {return "當前登錄的是:" + session.getAttribute("login_user");} }2. 啟動項目
3. 調用登錄接口
#登錄接口 http://localhost:8081/user/login4. 調用獲取用戶信息接口
#獲取用戶信息接口 http://localhost:8081/user/info用戶登錄之后,獲取用戶信息,可以正常獲取
5. 重啟tomcat調用獲取用戶信息接口
發現在重啟tomcat調用獲取用戶信息接口,用戶信息為null
得出結論:說明session不能實現共享,下面會繼續證明
二、Session與Cookie的關系
cookie 和session 的區別:
- 1.cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。
- 2.cookie不是很安全,別人可以分析存放在本地的COOKIE并進行COOKIE欺騙
考慮到安全應當使用session。 - 3.session會在一定時間內保存在服務器上。當訪問增多,會比較占用你服務器的性能
考慮到減輕服務器性能方面,應當使用COOKIE。 - 4.單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie
- 5.Session和Cookie是不分家的,Session就存放在瀏覽器請求的Header中的Set-Cookie這個屬性上
三、傳統Session
3.1. 啟動項目
演示同一程序啟動8081端口和8082端口模擬2個服務器分布式
3.2. 瀏覽器測試
1.調用8081登錄接口
2.調用8081獲取用戶信息接口,可以正常獲取用戶信息
3.調用8082獲取用戶信息接口,無法獲取用戶信息
得出結論:說明session不能實現共享
四、分布式Session解決方案
4.1. Spring Session + Redis
https://gblfy.blog.csdn.net/article/details/113807497
4.2. Token + Redis
https://gblfy.blog.csdn.net/article/details/113807504
4.3. Token + JWT
https://gblfy.blog.csdn.net/article/details/113807506
五、方案區別
Jwt:token里面的內容可以被解析,但是不能被篡改,因此,token中的不能存放敏感性信息
例如:密碼
Srpring-session/token+redis token 不能被解析,更不可能被篡改
總結:關于采用哪種方案根據需求而定即可。
總結
以上是生活随笔為你收集整理的分布式6大核心专题_分布式Session的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 使用 zip4j 进行基本的压
- 下一篇: 查看python版本命令