springboot3+vue3(八)Redis 基础使用 -- 登录优化

Redis基础使用

1、在pom文件中添加Redis坐标

<!--redis坐标-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
redis坐标

2、在yml中添加redis的配置信息

3、在测试类中来编写

@SpringBootTest //如果在测试类上添加了这个注解,那么将来单元测试方法执行之前,会先初始化Spring容器
public class RedisTest {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Test
    public void testset(){
        //往redis中存储一个键值对 StringRedisTemplate
        ValueOperations<String, String> operations = stringRedisTemplate.opsForValue();

        //存储至Redis
        operations.set("username","zhangsan");
        operations.set("id","1",10, TimeUnit.MINUTES); //key value timeout-过期时间 unit-过期时间单位TimeUnit枚举
    }

    @Test
    public void testget(){
        ValueOperations<String, String> operations = stringRedisTemplate.opsForValue();
        //从Redis中获取数据
        System.out.println(operations.get("username"));
    }

    @Test
    public void testdelete(){
        ValueOperations<String, String> operations = stringRedisTemplate.opsForValue();
        //从Redis中删除对应的键值
        operations.getOperations().delete("username");
    }



}
RedisTest

 

 

 

实战 -- 登录优化

当用户调用登录接口时返回token,此时用这个token去访问其它接口是没有问题的。

当用户修改密码后,重新登录(调用登录接口生成新的token)后,使用旧的token去调用其它接口还是可以正常调用,这样就会存在问题。

解决思路:当用户登录(调用登录接口生成token)时,我们同时往Redis里存放一份token,当用户调用其它接口时,我们拿调用登录接口返回的token与Redis中存放的token去比对。如果一致则放行,如果不一致则代表token失效。

 

实现:

1、在登录接口生成token后存储至redis中

2、在登录拦截器中,校验token前,拿当前的token去redis中获取相同的token看能不能获取到,如果获取不到说明token已失效

 3、修改密码接口中,当密码修改成功后,在redis中删除对应的token

 

 

效果展示:

调用登录接口生成token令牌

 此时调用获取当前登录用户详细信息接口正常

 调用修改密码接口后,再次调用获取当前登录用户详细信息接口

 

 重新登录后生成新的token,再拿新的token去访问获取当前登录用户详细信息接口

 

 

posted @ 2024-03-13 22:56  一介桃白白  阅读(77)  评论(0编辑  收藏  举报