1.判断是否token,没有跳转登录页
2.使用refresh_token请求获取新的token
3.把新的token放到vuex中
4.把失败的请求重新发送出去
// // 响应拦截器
// request.interceptors.response.use(
// // 响应成功进入第1个函数
// // 该函数的参数是响应对象
// function(response) {
// return response;
// },
// // 响应失败进入第2个函数,该函数的参数是错误对象
// async function(error) {
// // 如果响应码是 401 ,则请求获取新的 token
// // 响应拦截器中的 error 就是那个响应的错误对象
// console.dir(error);
// if (error.response && error.response.status === 401) {
// // 校验是否有 refresh_token
// const user = store.state.user;
// if (!user || !user.refresh_token) {
// router.push("/login");
// // 代码不要往后执行了
// return;
// }
// // 如果有refresh_token,则请求获取新的 token
// try {
// const res = await axios({
// method: "PUT",
// url: "********",
// headers: {
// Authorization: `Bearer ${user.refresh_token}`
// }
// });
// // 如果获取成功,则把新的 token 更新到容器中
// console.log("刷新 token 成功", res);
// store.commit("setUser", {
// token: res.data.data.token, // 最新获取的可用 token
// refresh_token: user.refresh_token // 还是原来的 refresh_token
// });
// // 把之前失败的用户请求继续发出去
// // config 是一个对象,其中包含本次失败请求相关的那些配置信息,例如 url、method 都有
// // return 把 request 的请求结果继续返回给发请求的具体位置
// return request(error.config);
// } catch (err) {
// // 如果获取失败,直接跳转 登录页
// console.log("请求刷线 token 失败", err);
// router.push("/login");
// }
// }
// return Promise.reject(error);
// }
// );
个人学习记录,如果有人看见,不对之处欢迎指正,以免误人子弟