接上一篇:分布式6大核心专题_分布式Session
https://gblfy.blog.csdn.net/article/details/113802195
文章目录
- 1. 安装redis服务并启动
- 2. 依赖+代码+配置
- 3. 分别启动8081端口和8082端口
- 4. 调用8081登录接口
- 5. 调用8081获取用户信息接口
- 6. 调用8082获取用户信息接口
实现流程
1.安装redis服务并启动
2.依赖+代码+配置
3.演示同一程序启动8081端口和8082端口模拟2个服务器分布式
4.调用8081登录接口
5.调用8081获取用户信息接口
6.调用8082获取用户信息接口
1. 安装redis服务并启动
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 #应用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) {//账号密码正确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 "当前登录的是:" + stringRedisTemplate.opsForValue().get(token);}
}
3. 分别启动8081端口和8082端口
同上一篇
4. 调用8081登录接口
#登录接口
http://localhost:8081/user/loginWithToken?username=admin&password=admin
5. 调用8081获取用户信息接口
#获取用户信息接口
http://localhost:8081/user/infoWithToken?token=登录后的token
注:由于需要在请求header添加token,因此,请使用postman工具测试
6. 调用8082获取用户信息接口
#获取用户信息接口
http://localhost:8082/user/infoWithToken?token=登录后的token
注:由于需要在请求header添加token,因此,请使用postman工具测试
测试结论:可以正常获取用户信息,关闭8081服务器,也是一样的,因为用户信息存放在redis服务端,不在应用本地,除非把redis关闭。
补充:
小伙伴发现,只有登陆成功后,携带token才可以访问其他接口,对吧!但是,每次都要手动填写token是不是很麻烦,其实正常的场景,前端会将登录后的token存放到Local Storage中,访问接口时会携带token,后端也会校验此token是否合法。