问题描述
使用axios做统一拦截处理的时候,token失效相当于登录失效,或者异地登录的时候根据后端的code码来判断登录是否失效。但是发出多个请求的时候,返回的接口会统一走一下axios返回器,导致弹框会多次弹出。
不完美解决办法
立一个flag,让流程只走一次。问题就是,异常登录以后进入页面点击其他地方,第一次可以弹出弹框。当你在该网页第二登录,再异常退出,不会弹弹框了。因为flag为true了。
var flag = true
axios.interceptors.response.use(function (response) {
// console.log(‘flag’, flag)
switch (response.data.code) {
case 80001:
console.log(222)
if (flag) {
Message({
showClose: true,
type: ‘warning’,
message: response.data.msg
})
router.push(’/login’)
Promise.reject(new Error(‘error’))
}
flag = false
break
case 70001:
if (flag) {
Message({
showClose: true,
type: ‘error’,
message: response.data.msg
})
router.push(’/login’)
Promise.reject(new Error(‘error’))
}
flag = false
break
default:
return response.data
}
}, function (err) {
return Promise.reject(err)
})