diff --git a/src/config/axios/service.ts b/src/config/axios/service.ts index 9214bf8ea..c4dae4d9c 100644 --- a/src/config/axios/service.ts +++ b/src/config/axios/service.ts @@ -161,6 +161,8 @@ service.interceptors.response.use( } // 2. 进行刷新访问令牌 try { + // 刷新令牌时,需要将 isRelogin.show 设置为 false,解决在后台失效token,前端缓存token,登录页卡死的问题 + isRelogin.show = false const refreshTokenRes = await refreshToken() // 2.1 刷新成功,则回放队列的请求 + 当前请求 setToken((await refreshTokenRes).data.data) @@ -246,7 +248,12 @@ const handleAuthorized = () => { if (!isRelogin.show) { // 如果已经到登录页面则不进行弹窗提示 if (window.location.href.includes('login')) { - return + // 后台refreshtoken失效,前台缓存token存在,直接访问Login页面会卡死。 + // 清除掉token,重新走路由守卫,确保本地即使缓存了token也是能正常加载登录页,前提是要确保isRelogin.show为false + // https://wx.zsxq.com/group/88858522214142/topic/45811881251414188 + removeToken() + window.location.href = window.location.href + // return } isRelogin.show = true ElMessageBox.confirm(t('sys.api.timeoutMessage'), t('common.confirmTitle'), {