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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/9/27 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分布式6大核心专题_分布式Session 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

          • 一、Session存在服務(wù)器上還是tomcat中?
            • 1. 創(chuàng)建springboot項(xiàng)目
            • 2. 啟動(dòng)項(xiàng)目
            • 3. 調(diào)用登錄接口
            • 4. 調(diào)用獲取用戶信息接口
            • 5. 重啟tomcat調(diào)用獲取用戶信息接口
          • 二、Session與Cookie的關(guān)系
          • 三、傳統(tǒng)Session
            • 3.1. 啟動(dòng)項(xiàng)目
            • 3.2. 瀏覽器測(cè)試
          • 四、分布式Session解決方案
            • 4.1. Spring Session + Redis
            • 4.2. Token + Redis
            • 4.3. Token + JWT
          • 五、方案區(qū)別

一、Session存在服務(wù)器上還是tomcat中?

案例演示流程:
1.創(chuàng)建springboot項(xiàng)目
2.啟動(dòng)項(xiàng)目
3.調(diào)用登錄接口
4.調(diào)用獲取用戶信息接口
5.重啟tomcat調(diào)用獲取用戶信息接口

1. 創(chuàng)建springboot項(xiàng)目

pom

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

測(cè)試案例

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){//賬號(hào)密碼正確session.setAttribute("login_user", username);return "登錄成功";}@GetMapping("/info")public String info(HttpSession session) {return "當(dāng)前登錄的是:" + session.getAttribute("login_user");} }
2. 啟動(dòng)項(xiàng)目

3. 調(diào)用登錄接口
#登錄接口 http://localhost:8081/user/login
4. 調(diào)用獲取用戶信息接口
#獲取用戶信息接口 http://localhost:8081/user/info

用戶登錄之后,獲取用戶信息,可以正常獲取

5. 重啟tomcat調(diào)用獲取用戶信息接口

發(fā)現(xiàn)在重啟tomcat調(diào)用獲取用戶信息接口,用戶信息為null
得出結(jié)論:說(shuō)明session不能實(shí)現(xiàn)共享,下面會(huì)繼續(xù)證明

二、Session與Cookie的關(guān)系

cookie 和session 的區(qū)別:

  • 1.cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上。
  • 2.cookie不是很安全,別人可以分析存放在本地的COOKIE并進(jìn)行COOKIE欺騙
    考慮到安全應(yīng)當(dāng)使用session。
  • 3.session會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上。當(dāng)訪問(wèn)增多,會(huì)比較占用你服務(wù)器的性能
    考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用COOKIE。
  • 4.單個(gè)cookie保存的數(shù)據(jù)不能超過(guò)4K,很多瀏覽器都限制一個(gè)站點(diǎn)最多保存20個(gè)cookie
  • 5.Session和Cookie是不分家的,Session就存放在瀏覽器請(qǐng)求的Header中的Set-Cookie這個(gè)屬性上
三、傳統(tǒng)Session
3.1. 啟動(dòng)項(xiàng)目

演示同一程序啟動(dòng)8081端口和8082端口模擬2個(gè)服務(wù)器分布式

3.2. 瀏覽器測(cè)試

1.調(diào)用8081登錄接口
2.調(diào)用8081獲取用戶信息接口,可以正常獲取用戶信息
3.調(diào)用8082獲取用戶信息接口,無(wú)法獲取用戶信息

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

得出結(jié)論:說(shuō)明session不能實(shí)現(xiàn)共享

四、分布式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

五、方案區(qū)別

Jwt:token里面的內(nèi)容可以被解析,但是不能被篡改,因此,token中的不能存放敏感性信息
例如:密碼

Srpring-session/token+redis token 不能被解析,更不可能被篡改

總結(jié):關(guān)于采用哪種方案根據(jù)需求而定即可。

總結(jié)

以上是生活随笔為你收集整理的分布式6大核心专题_分布式Session的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。