在拦截器中添加一个处理程序来处理401错误并更新Bearer令牌。以下是一个Axios拦截器示例代码,用于处理授权错误和更新令牌:
import axios from 'axios';
const api = axios.create({
baseURL: 'https://api.example.com',
headers: {
'Authorization': 'Bearer ' + localStorage.getItem('access_token')
}
});
api.interceptors.response.use(
response => {
return response;
},
async error => {
const originalRequest = error.config;
if (error.response.status === 401 && !originalRequest._retry) {
originalRequest._retry = true;
try {
const response = await axios.post('https://api.example.com/token', {
grant_type: 'refresh_token',
refresh_token: localStorage.getItem('refresh_token')
});
const access_token = response.data.access_token;
localStorage.setItem('access_token', access_token);
api.defaults.headers.common['Authorization'] = 'Bearer ' + access_token;
return api(originalRequest);
} catch (error) {
// handle error
}
}
return Promise.reject(error);
}
);
export default api;
该示例代码中的api对象是一个Axios实例,其中包含一个Bearer令牌,该令牌被存储在本地存储中。在执行任何网络请求之前,都会执行Axios拦截器。在拦截器中,会检查响应是否包含401错误状态码,如果包含,则会判断重试次数,如果没有重试过,则会进行一次身份验证。身份验证成功后,会更新Bearer令牌并执行原始请求。