分布式Session解决方案_Token + Redis
接上一篇:分布式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:52. 依賴+代碼+配置
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=admin5. 調(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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 环境 crontab+she
- 下一篇: JWT操作工具类分享