jwt refresh token 方案

前后端基于json进行交互,接口通过JWT无状态token进行权限校验

  • 登录时,密码验证通过,取当前时间戳生成签名Token,将用户的基本信息放到分布式缓存中(Redis),将生成的Token放在Response Header的Authorization属性中,同时在缓存中记录值为当前时间戳的RefreshToken,并设置有效期
  • 客户端请求每次携带Token进行请求
  • 服务端每次校验请求的Token有效后,同时比对Token中的时间戳与分布式缓存中(Redis)的RefreshToken时间戳是否一致,一致则判定Token有效
  • 当请求的Token被验证时抛出TokenExpiredException异常时说明Token过期,校验时间戳一致后重新生成Token并调用登录方法
  • 每次生成新的Token后,同时要根据新的时间戳更新与分布式缓存中的RefreshToken,以保证两者时间戳一致

采用JWT有效期内刷新Token方案,解决并发请求问题

为避免多个请求同一时间分别生成不同的Token,我们引入redis锁机制。即我们的目的是同一个用户同一时间的不同请求,只允许获得锁的请求进行令牌刷新,其他的请求因为是在令牌有效期因此直接放行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章