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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

分布式Session解决方案_Token + Redis

發(fā)布時(shí)間:2024/9/27 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分布式Session解决方案_Token + Redis 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

接上一篇:分布式6大核心專題_分布式Session
https://gblfy.blog.csdn.net/article/details/113802195

文章目錄

            • 1. 安裝redis服務(wù)并啟動(dòng)
            • 2. 依賴+代碼+配置
            • 3. 分別啟動(dòng)8081端口和8082端口
            • 4. 調(diào)用8081登錄接口
            • 5. 調(diào)用8081獲取用戶信息接口
            • 6. 調(diào)用8082獲取用戶信息接口

實(shí)現(xiàn)流程
1.安裝redis服務(wù)并啟動(dòng)
2.依賴+代碼+配置
3.演示同一程序啟動(dòng)8081端口和8082端口模擬2個(gè)服務(wù)器分布式
4.調(diào)用8081登錄接口
5.調(diào)用8081獲取用戶信息接口
6.調(diào)用8082獲取用戶信息接口

1. 安裝redis服務(wù)并啟動(dòng)
docker run -d -p 6379:6379 redis:5
2. 依賴+代碼+配置

pom

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

application.yml

spring:redis:host: 192.168.0.113 #ip地址port: 6379 #端口password: #密碼 server:port: 8081 #應(yīng)用web端口

案例代碼

package com.gblfy.distributed.session.controller;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.web.bind.annotation.*;import java.util.UUID; import java.util.concurrent.TimeUnit;@RequestMapping("/user") @RestController public class UserController {@Autowiredprivate StringRedisTemplate stringRedisTemplate;@GetMapping("/loginWithToken")public String loginWithToken(@RequestParam String username,@RequestParam String password) {//賬號(hào)密碼正確String key = "token_" + UUID.randomUUID().toString();stringRedisTemplate.opsForValue().set(key, username, 3600, TimeUnit.SECONDS);return key;}@GetMapping("/infoWithToken")public String infoWithToken(@RequestHeader String token) {return "當(dāng)前登錄的是:" + stringRedisTemplate.opsForValue().get(token);} }
3. 分別啟動(dòng)8081端口和8082端口

同上一篇

4. 調(diào)用8081登錄接口
#登錄接口 http://localhost:8081/user/loginWithToken?username=admin&password=admin
5. 調(diào)用8081獲取用戶信息接口
#獲取用戶信息接口 http://localhost:8081/user/infoWithToken?token=登錄后的token

注:由于需要在請求header添加token,因此,請使用postman工具測試

6. 調(diào)用8082獲取用戶信息接口
#獲取用戶信息接口 http://localhost:8082/user/infoWithToken?token=登錄后的token

注:由于需要在請求header添加token,因此,請使用postman工具測試

測試結(jié)論:可以正常獲取用戶信息,關(guān)閉8081服務(wù)器,也是一樣的,因?yàn)橛脩粜畔⒋娣旁趓edis服務(wù)端,不在應(yīng)用本地,除非把redis關(guān)閉。

補(bǔ)充:
小伙伴發(fā)現(xiàn),只有登陸成功后,攜帶token才可以訪問其他接口,對吧!但是,每次都要手動(dòng)填寫token是不是很麻煩,其實(shí)正常的場景,前端會(huì)將登錄后的token存放到Local Storage中,訪問接口時(shí)會(huì)攜帶token,后端也會(huì)校驗(yàn)此token是否合法。

總結(jié)

以上是生活随笔為你收集整理的分布式Session解决方案_Token + Redis的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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