|
@@ -55,6 +55,9 @@ const requestInterceptor = (config) => {
|
|
|
return config;
|
|
return config;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+// 记录是否正在跳转登录页
|
|
|
|
|
+let isRedirectingToLogin = false;
|
|
|
|
|
+
|
|
|
// 响应拦截器
|
|
// 响应拦截器
|
|
|
const responseInterceptor = (response, options = {}) => {
|
|
const responseInterceptor = (response, options = {}) => {
|
|
|
const { data, statusCode } = response;
|
|
const { data, statusCode } = response;
|
|
@@ -84,18 +87,28 @@ const responseInterceptor = (response, options = {}) => {
|
|
|
code: 401,
|
|
code: 401,
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
- // // 4. 提示并跳转登录页(默认逻辑)
|
|
|
|
|
- uni.showToast({
|
|
|
|
|
- title: "登录已过期,请重新登录",
|
|
|
|
|
- icon: "none",
|
|
|
|
|
- success: () => {
|
|
|
|
|
- setTimeout(() => {
|
|
|
|
|
- uni.reLaunch({
|
|
|
|
|
- url: LOGIN_PAGE_PATH,
|
|
|
|
|
- });
|
|
|
|
|
- }, 1500);
|
|
|
|
|
- },
|
|
|
|
|
- });
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // 4. 提示并跳转登录页(防抖/防重复跳转处理)
|
|
|
|
|
+ if (!isRedirectingToLogin) {
|
|
|
|
|
+ isRedirectingToLogin = true;
|
|
|
|
|
+ uni.showToast({
|
|
|
|
|
+ title: "登录已过期,请重新登录",
|
|
|
|
|
+ icon: "none",
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ setTimeout(() => {
|
|
|
|
|
+ uni.reLaunch({
|
|
|
|
|
+ url: LOGIN_PAGE_PATH,
|
|
|
|
|
+ success: () => {
|
|
|
|
|
+ isRedirectingToLogin = false;
|
|
|
|
|
+ },
|
|
|
|
|
+ fail: () => {
|
|
|
|
|
+ isRedirectingToLogin = false;
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }, 1500);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
return Promise.reject({
|
|
return Promise.reject({
|
|
|
...data,
|
|
...data,
|
|
|
code: 401,
|
|
code: 401,
|