74 lines
2.1 KiB
JavaScript
74 lines
2.1 KiB
JavaScript
// 在登录成功后请调用 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需求加点逻辑判断处理即可
|
||
};
|
||
// 获取token,有就丢进请求头
|
||
const tokenString = wx.getStorageSync('access_token');
|
||
if (tokenString) {
|
||
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.navigateTo({
|
||
url: '/pages/login/login',
|
||
complete: () => {
|
||
isNavigatingToLogin = false;
|
||
}
|
||
});
|
||
}
|
||
}
|
||
reject(res.data);
|
||
return;
|
||
}
|
||
wx.showToast({
|
||
title: res.data.message,
|
||
icon: 'none'
|
||
});
|
||
reject(res.data);
|
||
} else {
|
||
resolve(res.data);
|
||
}
|
||
|
||
},
|
||
fail(err) {
|
||
console.log(err)
|
||
// 断网、服务器挂了都会fail回调,直接reject即可
|
||
reject(err);
|
||
},
|
||
});
|
||
});
|
||
}
|
||
|
||
// 导出请求和服务地址
|
||
export default request; |