axios 后台管理项目 - token刷新,拦截器设置

最近在公司做一个vue.js的后台管理系统。鉴于自己也是vue小白,在网上查阅了很多现成的资料,总算是把需求搞定了。
先来介绍一下需求:登录时请求token和refresh_token(用来刷新token),每一次请求后端接口的时候都要在header里带token,如果过期会报错401,在过期的半小时内用refresh_token重新请求可以刷新token,使用户不必被强制退出重新登录。

这个项目使用的axios和vue-router,解决方法如下:

参考:http://blog.csdn.net/qq673318522/article/details/55506650

思路

axios设置的思路是,先设置默认的数据,比如说超时时间,url前缀,然后设置request和response拦截器,request拦截器是在发送请求之前执行,response拦截器是在请求返回之后执行。
这里实现刷新token主要是在response拦截器做文章,请求返回401时先记录这次请求的设置config,然后请求刷新接口,刷新成功之后再重新发送一次之前失败的请求,因为config保存下来,所以发送请求的时候可以先把config中的token换成最新的token,再直接用axios(config),而不用担心其他的设置,从而实现重新请求。
那么问题在于如何知道刷新token成不成功呢,如果无脑反复请求会变成死循环,因此需要设置一个变量在config中,请求过刷新接口之后设置这个变量为true,这样就不会重复刷新了。

代码

http.js内容如下:

import axios from 'axios'
import {Loading, Message} from 'element-ui'
import qs from 'qs';
import store from '../store/index'
import router from '../router/index'

// axios 配置
axios.defaults.timeout = 5000
axios.defaults.base
  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值