From f1598aedfdbe9c7b68b5f7709e5b003947bf2084 Mon Sep 17 00:00:00 2001 From: ray <1490493387@qq.com> Date: Wed, 13 Nov 2024 12:54:07 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20:recycle:=20request=20=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E7=B1=BB=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/auth/index.ts | 12 ++++++++++++ src/api/system/user.ts | 2 +- src/store/modules/user.ts | 6 +++--- src/utils/request.ts | 27 ++++++++++++++------------- 4 files changed, 30 insertions(+), 17 deletions(-) diff --git a/src/api/auth/index.ts b/src/api/auth/index.ts index 8d38dcb4..299782b9 100644 --- a/src/api/auth/index.ts +++ b/src/api/auth/index.ts @@ -20,6 +20,18 @@ const AuthAPI = { }); }, + /** 刷新token 接口*/ + refreshToken(refreshToken: string) { + return request({ + url: `${AUTH_BASE_URL}/refresh-token`, + method: "post", + data: { refreshToken: refreshToken }, + headers: { + Authorization: "no-auth", + }, + }); + }, + /** 注销 接口*/ logout() { return request({ diff --git a/src/api/system/user.ts b/src/api/system/user.ts index 9e3b590c..c9fe47a6 100644 --- a/src/api/system/user.ts +++ b/src/api/system/user.ts @@ -113,7 +113,7 @@ const UserAPI = { url: `${USER_BASE_URL}/export`, method: "get", params: queryParams, - responseType: "arraybuffer", + responseType: "blob", }); }, diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 59fdee2b..b206dfa5 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -59,7 +59,7 @@ export const useUserStore = defineStore("user", () => { return new Promise((resolve, reject) => { AuthAPI.logout() .then(() => { - clearUserSession(); + clearUserData(); resolve(); }) .catch((error) => { @@ -73,7 +73,7 @@ export const useUserStore = defineStore("user", () => { * * @returns */ - function clearUserSession() { + function clearUserData() { return new Promise((resolve) => { clearToken(); usePermissionStoreHook().resetRouter(); @@ -87,7 +87,7 @@ export const useUserStore = defineStore("user", () => { getUserInfo, login, logout, - clearUserSession, + clearUserData, }; }); diff --git a/src/utils/request.ts b/src/utils/request.ts index 6d0f8eb7..6ed449b5 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -1,7 +1,4 @@ -import axios, { - type InternalAxiosRequestConfig, - type AxiosResponse, -} from "axios"; +import axios, { type InternalAxiosRequestConfig, type AxiosResponse } from "axios"; import qs from "qs"; import { useUserStoreHook } from "@/store/modules/user"; import { ResultEnum } from "@/enums/ResultEnum"; @@ -20,9 +17,14 @@ const service = axios.create({ // 请求拦截器 service.interceptors.request.use( (config: InternalAxiosRequestConfig) => { - const accessToken = getToken(); - if (accessToken) { - config.headers.Authorization = accessToken; + // 如果设置了 "no-auth",则不携带 Authorization 头,用于登录、刷新 token 等接口 + if (config.headers.Authorization === "no-auth") { + delete config.headers.Authorization; + } else { + const accessToken = getToken(); + if (accessToken) { + config.headers.Authorization = accessToken; + } } return config; }, @@ -34,11 +36,10 @@ service.interceptors.request.use( // 响应拦截器 service.interceptors.response.use( (response: AxiosResponse) => { - // 检查配置的响应类型是否为二进制类型('blob' 或 'arraybuffer'), 如果是,直接返回响应对象 - if ( - response.config.responseType === "blob" || - response.config.responseType === "arraybuffer" - ) { + const { responseType } = response.config; + + // 如果响应类型是二进制数据(文件导出场景), 则直接返回 response + if (responseType === "blob") { return response; } @@ -61,7 +62,7 @@ service.interceptors.response.use( type: "info", }); useUserStoreHook() - .clearUserSession() + .clearUserData() .then(() => { location.reload(); });