1.利用Redis实现令牌主动失效机制
我们发现在修改密码后,原来的令牌任然生效,这是不合理的。
实现思路如下
springboot集成redis
将生成的令牌存储到redis中
修改登录接口的代码
//把token存储在redis中
ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue();
//设置过期 时间为一个小时
opsForValue.set(token,token,1, TimeUnit.HOURS);
修改拦截器中的代码
如果在redis中找不到token,那么就抛出异常
因为修改密码后,token会删除,
添加一个参数
//在用户更新密码后,要删除原来的token
ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue();
opsForValue.getOperations().delete(token);
测试在修改密码后token更新
测试成功
在原来的token下的接口不能访问
在更新token后可以正常的使用了
- 总结一下
- 在拦截器中加了验证token是否合法的代码,每次都要去redis中访问
- 在登录接口中加了代码,让每次登录都生成一个token,
- 在修改密码中加代码,在修改密码后删除原来的token
2.SpringBoot部署项目
- 添加配置文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>3.1.3</version>
</dependency>
点击package进行打包
打包后的位置
运行jar
- 可能会出现的报错
- big-event-1.0-SNAPSHOT.jar中没有主清单属性
- 解决办法:添加代码
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.itheima.BigEventApplication</mainClass>
<layout>JAR</layout>
</configuration>
</plugin>
</plugins>
</build>
3.属性配置方式
1.
2.
3.
从下往上依次变高
4.多环境开发–配置
5.多环境开发–分组
见PPT