From b578cf8c606ae28562d3ecd146b978f11ec92bf0 Mon Sep 17 00:00:00 2001 From: ywyonui Date: Fri, 26 Sep 2025 13:01:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=99=BB=E5=BD=95=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=A0=A1=E9=AA=8C=EF=BC=8C=E9=81=BF=E5=85=8D=E9=87=8D?= =?UTF-8?q?=E5=A4=8DcheckUser=E7=9A=84=E7=99=BB=E5=BD=95=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/modules/user.ts | 17 +++++++---------- src/utils/request/index.ts | 27 ++++++++++++++++++++++++--- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index e33ce39..c985647 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -134,15 +134,12 @@ export const useUserStore = defineStore({ }, async loginByOpenId(openId: string) { try { - // // 先校验当前登录的用户的openid,如果和传入的openid匹配,直接返回true - // if ( - // this.userdata && - // this.userdata.openId && - // openId && - // this.userdata.openId === openId - // ) { - // return true; - // } + // 先校验当前登录的用户的openid,如果和传入的openid匹配,直接返回true + if (this.userdata && this.userdata.openId && this.userdata.userType === "JS" + && openId && this.userdata.openId === openId + ) { + return true; + } // 如果当前登录的用户的openid和传入的openid不匹配,则调用checkOpenId接口进行校验 const res = await checkOpenId({ openId, @@ -171,7 +168,7 @@ export const useUserStore = defineStore({ */ checkToken() { // 先校验当前登录的用户的openid - if (this.userdata && this.userdata.openId) { + if (this.userdata && this.userdata.openId && this.userdata.userType === "JS") { return true; } uni.reLaunch({ diff --git a/src/utils/request/index.ts b/src/utils/request/index.ts index 97a1e46..7fb37f6 100644 --- a/src/utils/request/index.ts +++ b/src/utils/request/index.ts @@ -63,9 +63,30 @@ export const interceptor = { } if (response.data) { if (response.data.resultCode === -9998) { - uni.reLaunch({ - url: "/pages/system/login/login", - }); + const store = useUserStore(); + const userData = store.getUser || {}; + const openId = userData.openId || ''; + store.logout(); + if (openId && openId.length) { + // 返回一个新的Promise,用于重新登录并重新调用接口 + return new Promise((resolve, reject) => { + store.loginByOpenId(openId).then(() => { + // 重新登录成功后,重新发送原始请求 + // 使用原始请求配置,但确保包含所有必要参数 + const originalConfig = response.config; + request(Object.assign({}, originalConfig)).then((newResponse: any) => { + resolve(newResponse); + }).catch((error) => { + reject(error); + }); + }).catch((error) => { + // 重新登录失败,显示登录过期模态框 + console.error("重新登录失败:", error); + _loginExpiredModal(); + reject(error); + }); + }); + } } return response.data; } else {