日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

分布式6大核心专题_分布式Session

發布時間:2024/9/27 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分布式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/login
4. 調用獲取用戶信息接口
#獲取用戶信息接口 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獲取用戶信息接口,無法獲取用戶信息

#登錄接口 http://localhost:8081/user/login http://localhost:8082/user/login#獲取用戶信息接口 http://localhost:8081/user/info http://localhost:8082/user/info

得出結論:說明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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。