|
|
@@ -1,6 +1,5 @@
|
|
|
import axios, { AxiosInstance, AxiosError, AxiosRequestConfig, InternalAxiosRequestConfig, AxiosResponse } from "axios";
|
|
|
import { showFullScreenLoading, tryHideFullScreenLoading } from "@/components/Loading/fullScreen";
|
|
|
-import { LOGIN_URL } from "@/config";
|
|
|
import { ElMessage } from "element-plus";
|
|
|
import { ResultData } from "@/api/interface";
|
|
|
import { ResultEnum } from "@/enums/httpEnum";
|
|
|
@@ -11,6 +10,7 @@ import { localGet } from "@/utils";
|
|
|
import router from "@/routers";
|
|
|
import { cryptoUtil } from "@/utils/crypto";
|
|
|
import { cryptoStrategy } from "@/utils/cryptoStrategy";
|
|
|
+import { applyAuthExpiredSideEffects, isAuthExpiredCode } from "@/api/helper/handleAuthExpired";
|
|
|
|
|
|
export interface CustomAxiosRequestConfig extends InternalAxiosRequestConfig {
|
|
|
loading?: boolean;
|
|
|
@@ -77,7 +77,6 @@ class RequestHttp {
|
|
|
(response: AxiosResponse & { config: CustomAxiosRequestConfig }) => {
|
|
|
const { data, config, headers } = response;
|
|
|
|
|
|
- const userStore = useUserStore();
|
|
|
axiosCanceler.removePending(config);
|
|
|
config.loading && tryHideFullScreenLoading();
|
|
|
|
|
|
@@ -94,11 +93,9 @@ class RequestHttp {
|
|
|
}
|
|
|
|
|
|
const processedData = response.data;
|
|
|
- // 登录失效
|
|
|
- if (processedData.code == ResultEnum.OVERDUE) {
|
|
|
- userStore.setToken("");
|
|
|
- router.replace(LOGIN_URL);
|
|
|
- ElMessage.error(processedData.msg);
|
|
|
+ // 登录失效 / 账号在别处登录
|
|
|
+ if (isAuthExpiredCode(processedData.code)) {
|
|
|
+ applyAuthExpiredSideEffects(processedData.msg, processedData.code);
|
|
|
return Promise.reject(processedData);
|
|
|
}
|
|
|
// 全局错误信息拦截(防止下载文件的时候返回数据流,没有 code 直接报错)
|
|
|
@@ -118,7 +115,7 @@ class RequestHttp {
|
|
|
if (error.message.indexOf("timeout") !== -1) ElMessage.error("请求超时!请您稍后重试");
|
|
|
if (error.message.indexOf("Network Error") !== -1) ElMessage.error("网络错误!请您稍后重试");
|
|
|
// 根据服务器响应的错误状态码,做不同的处理
|
|
|
- if (response.data.message) {
|
|
|
+ if (response?.data?.message) {
|
|
|
ElMessage.error(response.data.message);
|
|
|
} else {
|
|
|
if (response) checkStatus(response.status);
|
|
|
@@ -185,10 +182,8 @@ class RequestHttp {
|
|
|
try {
|
|
|
const response = JSON.parse(xhr.responseText);
|
|
|
// 统一处理响应,与 axios 拦截器保持一致
|
|
|
- if (response.code == ResultEnum.OVERDUE) {
|
|
|
- userStore.setToken("");
|
|
|
- router.replace(LOGIN_URL);
|
|
|
- ElMessage.error(response.msg);
|
|
|
+ if (isAuthExpiredCode(response.code)) {
|
|
|
+ applyAuthExpiredSideEffects(response.msg, response.code);
|
|
|
reject(response);
|
|
|
return;
|
|
|
}
|