fix: mock下午无法使用登录及相关功能

This commit is contained in:
osiris
2024-03-07 15:26:36 +08:00
parent d5865d4c8e
commit 6ecafa8bc2
2 changed files with 32 additions and 5 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ import type { LoginReqData, RegisterReqData, sendCodeEmailReq, ForgetReqData } f
export const useUserStore = defineStore('user', { export const useUserStore = defineStore('user', {
//用来存放变量 //用来存放变量
state: () => ({ state: () => ({
token: localStorage.getItem('TOKEN'),//token token: import.meta.env.VITE_IS_MOCK == 'true' ? localStorage.setItem('TOKEN', '') : localStorage.getItem('TOKEN'),//token
username: '', username: '',
avatar: '', avatar: '',
email: '', email: '',
+31 -4
View File
@@ -9,12 +9,35 @@ let request = axios.create({
baseURL: import.meta.env.VITE_IS_MOCK == 'true' ? import.meta.env.VITE_APP_BASE_API : import.meta.env.VITE_SERVE + import.meta.env.VITE_APP_BASE_API, baseURL: import.meta.env.VITE_IS_MOCK == 'true' ? import.meta.env.VITE_APP_BASE_API : import.meta.env.VITE_SERVE + import.meta.env.VITE_APP_BASE_API,
timeout: 5000 timeout: 5000
}) })
//创建一个存储CancelToken源的映射,用于管理请求和取消操作
const cancelSources = new Map();
//mock环境下无法使用的接口
const mockBanUrl: string[] = [
'/login',
'/user/info',
'/get/tool/collects',
'/send/forget/password/code',
'/send/register/code',
'/forget/password',
'/register',
'/logout'
];
//请求拦截器 //请求拦截器
request.interceptors.request.use(config => { request.interceptors.request.use(config => {
//获取token if (import.meta.env.VITE_IS_MOCK == 'true' && config.url != undefined && mockBanUrl.includes(config.url)) {
if (userStore.token) { //mock环境不能使用登录后相关功能
// config.headers.token = userStore.token const source = axios.CancelToken.source()
config.headers.Authorization = 'Bearer ' + userStore.token //将source与请求的url或某种唯一标识符关联起来
cancelSources.set(config.url, source);
config.cancelToken = source.token;
//取消
source.cancel('Request canceled by the user.');
} else {
//获取token
if (userStore.token) {
// config.headers.token = userStore.token
config.headers.Authorization = 'Bearer ' + userStore.token
}
} }
return config; return config;
}); });
@@ -27,6 +50,10 @@ request.interceptors.response.use((response) => {
} }
return response.data; return response.data;
}, (error) => { }, (error) => {
if (error.code == 'ERR_CANCELED') {
//拒绝响应
return Promise.race([]);
}
//处理网络错误 //处理网络错误
let msg = ''; let msg = '';
let status = error.response.status; let status = error.response.status;