1,现在在页面中调用后台API需要校验token的有效性,因此使用以下代对axios 进行封装。当token过期或者失效后,进行弹窗提示用户点击重新登录返回至登录界面。一些页面中初始加载时需要调用多个api,因此会出现多次的弹窗提示,如何让只弹窗一次后续的api不再调用。即当前页面如果调用的第一个api返回500后就不执行调用后续api的代码。
service.interceptors.response.use(
response=>{
const res=response.data;
return response.data;
},err=>{
console.log(err);
let errCode=err.response.data.errCode;
let errMsg=err.response.data.errMsg;
if(errCode===500&&errMsg=='Invalid token'){
MessageBox.confirm('你已被登出,可以取消继续留在该页面,或者重新登录!','确认登出',{
confirmButtonText:'重新登录',
cancelButtonText:'取消',
type:'warning'
}).then(()=>{
store.dispatch('FedLogOut').then(()=>{
router.push('/login');
Message({
//message:err.response.data.errMsg,
message:'登录信息已失效',
type:'error',
duration:5*1000
})
})
})
}
else if(errCode===500&&errMsg=='No authority'){
router.push('/');
Message({
//message:err.response.data.errMsg,
message:'无操作权限!',
type:'error',
duration:5*1000
})
}
}
)
借用楼上说的
cancel token
贴下具体实现的代码====================================
附上比较笨的方法,设置一个变量计数