這是我當前的代碼:
axios.interceptors.response.use(
(response) => {
return response;
},
(error) => {
const originalRequest = error.config;
if (error.response.status === 401 && !originalRequest._retry) {
originalRequest._retry = true;
axios.get("/auth/token").then((res) => {
if (res.status === 200) {
console.log("Access token refreshed");
return axios(originalRequest);
}
});
} else {
return Promise.reject(error);
}
}
);
它正在按預期重繪 令牌,但不會重試原始請求。如果請求是要顯示一些資料,那么我只有在重新加載頁面或更改為其他路由并再次回傳以重新呈現組件時才能看到它。
在我的理解中,如果原始請求遇到錯誤 401,那么攔截器應該重繪 令牌并重試該呼叫 - 這將再次觸發攔截器,但現在將獲得成功回應 - 并將此新回應傳遞回原始承諾, 對?
uj5u.com熱心網友回復:
您需要回傳 axios 函式:
...
return axios.get("/auth/token").then((res) => {
if (res.status === 200) {
console.log("Access token refreshed");
return axios(originalRequest);
}
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/399026.html
