service请求拦截中增加单账号登录模式下被踢下线的友好提示
parent
565fad6cc5
commit
2b09b05f13
|
|
@ -119,14 +119,20 @@ service.interceptors.response.use(
|
||||||
// 2. 进行刷新访问令牌
|
// 2. 进行刷新访问令牌
|
||||||
try {
|
try {
|
||||||
const refreshTokenRes = await refreshToken()
|
const refreshTokenRes = await refreshToken()
|
||||||
// 2.1 刷新成功,则回放队列的请求 + 当前请求
|
const retData = (await refreshTokenRes).data
|
||||||
setToken((await refreshTokenRes).data.data)
|
if (retData.code === 499) {
|
||||||
config.headers!.Authorization = 'Bearer ' + getAccessToken()
|
//登录被踢下线的处理 by panda 25.04.23
|
||||||
requestList.forEach((cb: any) => {
|
return handleOfflineAuthorized(retData.msg)
|
||||||
cb()
|
} else {
|
||||||
})
|
// 2.1 刷新成功,则回放队列的请求 + 当前请求
|
||||||
requestList = []
|
setToken((await refreshTokenRes).data.data)
|
||||||
return service(config)
|
config.headers!.Authorization = 'Bearer ' + getAccessToken()
|
||||||
|
requestList.forEach((cb: any) => {
|
||||||
|
cb()
|
||||||
|
})
|
||||||
|
requestList = []
|
||||||
|
return service(config)
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// 为什么需要 catch 异常呢?刷新失败时,请求因为 Promise.reject 触发异常。
|
// 为什么需要 catch 异常呢?刷新失败时,请求因为 Promise.reject 触发异常。
|
||||||
// 2.2 刷新失败,只回放队列的请求
|
// 2.2 刷新失败,只回放队列的请求
|
||||||
|
|
@ -220,4 +226,31 @@ const handleAuthorized = () => {
|
||||||
}
|
}
|
||||||
return Promise.reject(t('sys.api.timeoutMessage'))
|
return Promise.reject(t('sys.api.timeoutMessage'))
|
||||||
}
|
}
|
||||||
|
/** 账号被踢下线的处理 by panda 25.04.23 */
|
||||||
|
const handleOfflineAuthorized = (msg: any) => {
|
||||||
|
const { t } = useI18n()
|
||||||
|
if (!isRelogin.show) {
|
||||||
|
// 如果已经到登录页面则不进行弹窗提示
|
||||||
|
if (window.location.href.includes('login')) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
isRelogin.show = true
|
||||||
|
ElMessageBox.confirm(msg, t('common.confirmTitle'), {
|
||||||
|
showCancelButton: false,
|
||||||
|
closeOnClickModal: false,
|
||||||
|
showClose: false,
|
||||||
|
closeOnPressEscape: false,
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
resetRouter() // 重置静态路由表
|
||||||
|
deleteUserCache() // 删除用户缓存
|
||||||
|
removeToken()
|
||||||
|
isRelogin.show = false
|
||||||
|
// 干掉token后再走一次路由让它过router.beforeEach的校验
|
||||||
|
window.location.href = window.location.href
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return Promise.reject(msg)
|
||||||
|
}
|
||||||
export { service }
|
export { service }
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue