fix(api): fix token handler

This commit is contained in:
2026-03-09 13:57:47 +08:00
parent 3b118e3304
commit e7670c7cef
4 changed files with 55 additions and 41 deletions

View File

@@ -17,6 +17,7 @@ fetch 参数:
"use client"
import { useUserStore } from "@/app/store/user"
import { usePermissionStore } from "@/components/label/store/auth"
import { deleteCookie, refreshKey } from "@/components/login/api"
import { isNumber } from "@/libs/util"
@@ -40,6 +41,7 @@ interface OptionsProps {
async function httpfetch<T>(options: OptionsProps): Promise<T> {
const { removeUserInfo, refreshToken } = useUserStore.getState()
const { logout } = usePermissionStore.getState()
const access_token = useUserStore.getState().access_token
const refresh_token = useUserStore.getState().refresh_token
@@ -186,24 +188,19 @@ async function httpfetch<T>(options: OptionsProps): Promise<T> {
return options.isDownload
? retry_response.blob()
: retry_response.json()
} else {
const { code } = refreshResponse
if (code === 406) {
try {
await deleteCookie()
} catch (error) {
rejected(error)
} finally {
// 清空身份信息并跳转至登录页面
removeUserInfo()
window.location.href = "/login"
}
} else {
throw new Error("重新获取token失败")
}
}
} catch (error) {
rejected(error)
try {
await deleteCookie()
} catch (error) {
rejected(error)
} finally {
// 清空身份信息并跳转至登录页面
removeUserInfo()
logout()
window.location.href = "/login"
}
}
} else if (status === 403) {
if (
@@ -271,8 +268,7 @@ async function httpfetch<T>(options: OptionsProps): Promise<T> {
? retry_response.blob()
: retry_response.json()
} else {
const { code } = refreshResponse
if (code === 406) {
if (refreshResponse.code === 406) {
try {
await deleteCookie()
} catch (error) {
@@ -280,6 +276,7 @@ async function httpfetch<T>(options: OptionsProps): Promise<T> {
} finally {
// 清空身份信息并跳转至登录页面
removeUserInfo()
logout()
window.location.href = "/login"
}
} else {