fix(api): fix token handler
This commit is contained in:
31
api/fetch.ts
31
api/fetch.ts
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user