【发布时间】:2020-02-12 04:30:51
【问题描述】:
我正在尝试在我的 vue.js 应用程序中实现令牌刷新。到目前为止,这是有效的,因为它会在 401 响应时刷新商店中的令牌,但我需要做的就是让拦截器在之后再次重试原始请求。
main.js
axios.interceptors.response.use(
response => {
return response;
},
error => {
console.log("original request", error.config);
if (error.response.status === 401 && error.response.statusText === "Unauthorized") {
store.dispatch("authRefresh")
.then(res => {
//retry original request???
})
.catch(err => {
//take user to login page
this.router.push("/");
});
}
}
);
store.js
authRefresh(context) {
return new Promise((resolve, reject) => {
axios.get("auth/refresh", context.getters.getHeaders)
.then(response => {
//set new token in state and storage
context.commit("addNewToken", response.data.data);
resolve(response);
})
.catch(error => {
reject(error);
});
});
},
我可以在控制台中记录error.config 并查看原始请求,但是有人知道我从这里做什么来重试原始请求吗?如果失败,也可以阻止它一遍又一遍地循环。
还是我这样做完全错了?欢迎提出建设性的批评。
【问题讨论】: