// 响应拦截器
axios.interceptors.response.use((res) => {
// 处理后端返回的数据格式,将res返回给前面
return res
}, async error => {
if (error && error.response && error.response.status) {
switch (error.response.status) {
case 401:
// error可以获取到触发401的所有信息
// 获取储存的数据
let user = JSON.parse(localStorage.userInfo)
// 发送登录接口登录,登录数据写死了,可以按照情况改
let res = await userApi.getUser({
phone: user.phone,
password: '1',
})
// 登录成功后
if (res.data.status == 1) {
// 保存最新的token数据
localStorage.token = res.data.data.token
// 获取报401状态码错误的接口数据
let arr = error.config.url + ''
let [num, apis, jiek, get] = arr.split('?')[0].split('/')
// 获取get传输数据
let nu = arr.split('?')[1]
let ress = ''
// 重新发送401报错请求,并获取数据
if (error.config.method == 'get') {
// get
ress = await axios({
url: `/${apis}/${jiek}/${get}?${nu}`,
method: error.config.method,
data: error.config.data
})
} else {
// post
ress = await axios({
url: `/${apis}/${jiek}/${get}`,
method: error.config.method,
data: error.config.data
})
}
// 返回请求成功数据
return Promise.resolve(ress)
}
case 404:
ElMessage.error('请求的资源未找到');
break;
}
}
return Promise.reject(error)
})
axios的Token无感刷新
最新推荐文章于 2024-03-11 10:03:10 发布