调整登录状态校验,避免重复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) {
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({

View File

@ -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 {