调整登录状态校验,避免重复checkUser的登录状态

This commit is contained in:
ywyonui 2025-09-26 13:01:45 +08:00
parent c5fc913a27
commit b578cf8c60
2 changed files with 31 additions and 13 deletions

View File

@ -134,15 +134,12 @@ export const useUserStore = defineStore({
}, },
async loginByOpenId(openId: string) { async loginByOpenId(openId: string) {
try { try {
// // 先校验当前登录的用户的openid如果和传入的openid匹配直接返回true // 先校验当前登录的用户的openid如果和传入的openid匹配直接返回true
// if ( if (this.userdata && this.userdata.openId && this.userdata.userType === "JS"
// this.userdata && && openId && this.userdata.openId === openId
// this.userdata.openId && ) {
// openId && return true;
// this.userdata.openId === openId }
// ) {
// return true;
// }
// 如果当前登录的用户的openid和传入的openid不匹配则调用checkOpenId接口进行校验 // 如果当前登录的用户的openid和传入的openid不匹配则调用checkOpenId接口进行校验
const res = await checkOpenId({ const res = await checkOpenId({
openId, openId,
@ -171,7 +168,7 @@ export const useUserStore = defineStore({
*/ */
checkToken() { checkToken() {
// 先校验当前登录的用户的openid // 先校验当前登录的用户的openid
if (this.userdata && this.userdata.openId) { if (this.userdata && this.userdata.openId && this.userdata.userType === "JS") {
return true; return true;
} }
uni.reLaunch({ uni.reLaunch({

View File

@ -63,9 +63,30 @@ export const interceptor = {
} }
if (response.data) { if (response.data) {
if (response.data.resultCode === -9998) { if (response.data.resultCode === -9998) {
uni.reLaunch({ const store = useUserStore();
url: "/pages/system/login/login", 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; return response.data;
} else { } else {