axios无痛刷新token:前后端配合与实现策略
版权申诉
20 浏览量
更新于2024-09-12
收藏 81KB PDF 举报
本文主要介绍了如何在前端使用Axios库实现无痛刷新token的功能,以确保用户在登录后,当token过期时能够自动获取新token而无需用户察觉。需求背景是前端在发送请求前需要检查token的有效性,如果过期,则先调用refreshToken接口获取新token,然后重新发送请求。
实现方法分为两种:
1. 请求前拦截(Method 1)
- 在axios的interceptors.request.use()方法中,预先拦截每个请求,通过读取localStorage中的token并检查其有效期。如果发现token已过期,将当前请求挂起,然后发送一个新的请求到refreshToken接口获取新token,获取成功后再继续原请求。这种方法的优点是可以节省流量,但需要后端支持提供token的有效时间信息,并且依赖于客户端的本地时间,可能存在时间不一致导致的校验失败风险。
2. 请求后拦截(Method 2)
- 不在请求前拦截,而是通过axios.interceptors.response.use()方法,处理返回的响应数据。请求发送后,如果返回的状态码表明token已过期,这时才调用refreshToken接口并重新发送请求。这种方法不需要额外的token过期字段,但会导致每次请求都可能包含两次网络通信,增加了流量消耗。
博主最终选择了Method 2,因为它相对简单,避免了本地时间篡改可能带来的问题,尽管这可能会增加一次请求次数。为了实现这一功能,作者会创建一个axios的基础骨架,包括从localStorage读取token,以及在response拦截器中处理token过期的情况。
具体实现步骤包括:
- 引入axios库
- 定义函数从localStorage获取token
- 使用axios.interceptors设置请求和响应拦截器
- 在响应拦截器中检查token有效性,如过期则刷新token并重新发送请求
通过这种方式,前端能够优雅地处理token的刷新,提供了一个无痛的用户体验,即使在并发请求的情况下也能确保token的有效性。
2020-10-14 上传
2023-09-01 上传
点击了解资源详情
2023-09-09 上传
2024-08-01 上传
2024-01-16 上传
2020-10-18 上传
weixin_38598213
- 粉丝: 2
- 资源: 853
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析