提交 bb1abb3b 作者: 方治民

feat: 改进 http 工具类在 401 错误时的处理机制

上级 77f8470f
......@@ -12,13 +12,14 @@ import { useI18n } from '/@/hooks/app/useI18n'
import { useMessage } from '/@/hooks/app/useMessage'
import { ContentTypeEnum, RequestEnum } from '/@/enums/httpEnum'
import { isString } from '/@/utils/is'
import { clearAuthCache, getToken } from '/@/utils/auth'
import { getToken, setAuthCache } from '/@/utils/auth'
import { deepMerge, setObjToUrlParams } from '/@/utils'
import { formatRequestDate, joinTimestamp } from './helper'
import { AxiosRetry } from '/@/utils/http/axios/axiosRetry'
import * as HTTP from '/@/api/types'
import { API_URL, API_URL_PREFIX } from '/@/utils/net'
import { handleResponseResource } from '/@/utils/proxy'
import { TOKEN_KEY } from '@/enums/cacheEnum'
const globSetting = useGlobSetting()
const urlPrefix = globSetting.urlPrefix
......@@ -63,16 +64,25 @@ const transform: AxiosTransform = {
// 如果不希望中断当前请求,请return数据,否则直接抛出异常即可
let timeoutMsg = ''
switch (status) {
case HTTP.Status.UNAUTHORIZED:
case HTTP.Status.UNAUTHORIZED: {
timeoutMsg = t('sys.api.timeoutMessage')
clearAuthCache()
// TODO: 跳转到登录页
// uni.reLaunch({
// url: '/pages/login/index',
// })
// 清空 token
setAuthCache(TOKEN_KEY, '')
// 判断当前页面是否为登录页,防止多个请求时重复跳转
const page = getCurrentPages()[0]
const loginPageRoute = `/pages/login/login`
if (page.route !== loginPageRoute) {
// 跳转到登录页
uni.reLaunch({
url: loginPageRoute,
})
return
}
break
}
default:
if (details) {
timeoutMsg = details
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论