0
我所理解的DoubleToken和一点疑惑
hurley 发表于 2020-07-26 14:15 136

之前的疑惑

  • 以为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不存在,提示用户需要登录
评论
0/240
  • CodeWwang
    给公司做的小站点也是稀里糊涂配置security 但是这个token这么实现能更自主性吧,用security 权限管理完全要按照他的那一套去捕获异常啥的。反正目前来看还是比较稀里糊涂,代码不熟
    2020-08-03 09:28  回复
    1276328181644685312
    • hurley  回复 @CodeWwang
      spring security的话,我推荐你去b站看一下【遇见狂神说】这个up主关于这个的视频把,说得挺好的
      2020-08-03 09:28   回复 1229704176057978880
    • CodeWwang  回复 @hurley
      看过了 讲的太浅了 挺一般
      2020-08-03 09:28   回复 1276328181644685312
  • 拉大锯
    为什么要使用doubleToken呢?
    2020-07-26 15:14  回复
    1153952789488054272
    • hurley  回复 @拉大锯
      看你视频说的:因为token的操作频繁,所以需要把token放到redis,依靠refreshToken生成token,所以需要refreshtoken保存在mysql
      2020-07-26 15:14   回复 1229704176057978880
    • 拉大锯  回复 @hurley
      嗯,是的。你还可以多想一下,如果一个用户一天有2个小时在线的,其他时间不在线,一直保存在redis里没有这个必要。
      2020-07-26 15:14   回复 1153952789488054272
  • 拉大锯
    现在呢?还有疑惑吗?
    2020-07-26 15:14  回复
    1153952789488054272
    • hurley  回复 @拉大锯
      没有了,之前一直觉得这东西很复杂,看了你的视频总算明白了
      2020-07-26 15:14   回复 1229704176057978880
    • 拉大锯  回复 @hurley
      嗯,好。感谢你的支持,还后面还可以学习一下SpringSecurity的,很多代码都不需要自己写了。我为了大家理解,所以才把这些流程和代码给大家写一次的,其实只要建表就行了,直接适用SpringSecurity就可以实现这些功能。
      2020-07-26 15:14   回复 1153952789488054272
    • hurley  回复 @拉大锯
      我之前看了很多oauth2.0的教程,和单纯的spring security有点不太一样,如果可以,希望你也可以出一套关于oauth2.0的教程
      2020-07-26 15:14   回复 1229704176057978880
    • 拉大锯  回复 @hurley
      oauth2.0你注重流程就好。把流程搞通了,就明白了。
      2020-07-26 15:14   回复 1153952789488054272
文章目录