前后端分离 token 的验证

在前后端分离的情况下,一般用 jwt token 验证,并且存在 localStorage 里。但是遇到这样一个问题,假设 token 过期了,会去请求刷新 token,但是如果用户通过书签栏快速打开 3 个请求,此时 token 是一样的,并且新的 token 没有返回的情况下,第二三个页面的 token 是旧的去刷新,后端就是重复刷新,会提示进入黑名单(已经刷新过)【The token has been blacklisted】,应该如何处理这种场景

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 2

个人思路:先用现在时间戳减去过期时间戳,判断如果过期时间在一分钟内,则用时间戳、用户token、请求的url生成一个MD5字符串存储到redis中,请求的先查询有没有相同字符串记录,没有则存入,如果有就是重复请求了

4年前 评论
____ (楼主) 4年前
66
  1. jwt 可以设置延期时间,就是token过期多少时间内依然可以访问
  2. 可以无感知刷新token ,写个中间件在用户访问时 判断token是否过期,过期则返回一个新的token(具体逻辑根据自己业务逻辑调整)
4年前 评论
____ (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!