1.在响应拦截器中,判断code为401,
2.再弹出对话框,
3.点确定做退出操作删除token及相关登录信息
4.然后跳转登录页面。
注意:此时会出现多个对话框,所以添加一个状态变量,如果第一次点击确定把状态变为true,在判断的401的同时判断状态值是否为false,这样就避免出现多个对话框
let isRefreshing = false
service.interceptors.response.use(response => {
const code = res.data.code
if (code === 401) { // token失效
// let currentName = router.currentRoute.name
let requireAuth = router.currentRoute.meta.requireAuth
if (requireAuth && !isRefreshing) {
isRefreshing = true
vue.$confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
distinguishCancelAndClose: true
})
.then(() => {
store.dispatch('LogOut').then(() => {
router.push({ name: 'login' })
})
return Promise.reject('error')
})
.catch(() => {
// on cancel
});
}
}
})