之前的疑惑 - 以为token过期了,可以通过refreshToekn生成token的,(不是,直接创建新的token和refreshToken) - refreshToken在数据库里存在的时间就是JwtUtil设置的过期时间,(不是,检查用户时token过期了就会创建新的refreshToken)
用户在用户模块登录 1. 使用jwtUtil通过userId生成token 2. md5加密token,生成tokenkey 3. 把token放入到redis,key为tokenKey,value为token 4. 使用jwtUtil通过userId生成refresh_token 5. 把userId,tokenKey,refresh_token放入到数据库【tb_refresh_token表】,这个存放的时间可以很久 6. 返回tokenKey给前端
检查用户 1. 前端传递tokenKey给后端 2. 解析tokenKey,生成token,判断token是否存在,如果不存在,则根据tokenKey查询refreshToken 3. 如果tokenKey能查询refreshToken存在,就看是否能解析refreshToken,能则refreshToken.getUserId()获取userId,再根据userId创建新的token和refreshToken (看是否能解析refreshToken,这个在Jwt上设置了过期时间,解析不了则说明过期了) 4. 如果tokenKey查询refreshToken不存在,提示用户需要登录