This commit is contained in:
@zuopngfei 2025-07-24 13:36:04 +08:00
parent 20b415ffc4
commit 3bcd80be76
2 changed files with 26 additions and 46 deletions

View File

@ -1,19 +1,8 @@
// 在登录成功后请调用 resetTokenInvalid() 重置 isTokenInvalid 标志
let isTokenInvalid = false;
const baseUrl = 'https://ddbs.1024tool.vip/';
let isNavigatingToLogin = false;
// 重置 token 失效标志(登录成功后调用)
export function resetTokenInvalid() {
isTokenInvalid = false;
}
function request(url, method = 'GET', data = {}) {
// 如果 token 已失效,直接中断请求
if (isTokenInvalid) {
return Promise.reject({ code: 10103, message: '登录已失效,请重新登录' });
}
const header = {
'content-type': 'application/json',
// 有其他content-type需求加点逻辑判断处理即可
@ -24,22 +13,16 @@ function request(url, method = 'GET', data = {}) {
header.Authorization = `${tokenString}`;
}
return new Promise((resolve, reject) => {
wx.request({
url: baseUrl + url,
method,
data,
dataType: 'json', // 微信官方文档中介绍会对数据进行一次JSON.parse
header,
success(res) {
if (res.data.code) {
if (res.data.code == 10103) {
isTokenInvalid = true;
wx.removeStorageSync('access_token');
if (!isNavigatingToLogin) {
const pages = getCurrentPages();
const currentRoute = pages[pages.length - 1]?.route;
if (currentRoute !== 'pages/login/login') {
isNavigatingToLogin = true;
wx.request({
url: baseUrl + url,
method,
data,
dataType: 'json', // 微信官方文档中介绍会对数据进行一次JSON.parse
header,
success(res) {
if (res.data.code) {
if (res.data.code == 10103) {
wx.removeStorageSync('access_token');
wx.navigateTo({
url: '/pages/login/login',
complete: () => {
@ -47,26 +30,25 @@ function request(url, method = 'GET', data = {}) {
}
});
}
reject(res.data);
return;
}
wx.showToast({
title: res.data.message,
icon: 'none'
});
reject(res.data);
return;
} else {
resolve(res.data);
}
wx.showToast({
title: res.data.message,
icon: 'none'
});
reject(res.data);
} else {
resolve(res.data);
}
},
fail(err) {
console.log(err)
// 断网、服务器挂了都会fail回调直接reject即可
reject(err);
},
});
},
fail(err) {
console.log(err)
// 断网、服务器挂了都会fail回调直接reject即可
reject(err);
},
});
});
}

View File

@ -1,5 +1,4 @@
import request from '~/api/request';
import { resetTokenInvalid } from '~/api/request';
import { aesCryptoJS } from '~/utils/util';
Page({
@ -47,7 +46,6 @@ Page({
return;
}
resetTokenInvalid()
const res = await request('doctor/login', 'post', {
password: aesCryptoJS(this.data.password),
mobile: this.data.mobile