diff --git a/api/request.js b/api/request.js index 1eb533c..d857bd4 100644 --- a/api/request.js +++ b/api/request.js @@ -1,6 +1,19 @@ +// 在登录成功后请调用 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需求加点逻辑判断处理即可 @@ -20,6 +33,7 @@ function request(url, method = 'GET', data = {}) { success(res) { if (res.data.code) { if (res.data.code == 10103) { + isTokenInvalid = true; wx.removeStorageSync('access_token'); if (!isNavigatingToLogin) { const pages = getCurrentPages(); @@ -35,6 +49,7 @@ function request(url, method = 'GET', data = {}) { } } reject(res.data); + return; } wx.showToast({ title: res.data.message, diff --git a/pages/login/login.js b/pages/login/login.js index ef9363d..0b93f79 100644 --- a/pages/login/login.js +++ b/pages/login/login.js @@ -1,5 +1,7 @@ import request from '~/api/request'; +import { resetTokenInvalid } from '~/api/request'; + Page({ data: { phoneNumber: '', @@ -32,10 +34,12 @@ Page({ // console.log(e.detail.errMsg) // 回调信息(成功失败都会返回) // console.log(e.detail.errno) // 错误码(失败时返回) if (e.detail.code) { + resetTokenInvalid() const res = await request('patient/quick_login', 'post', { code: e.detail.code }) await wx.setStorageSync('access_token', res.token); + if (res.is_personal_information_complete) { wx.navigateBack(); } else { diff --git a/pages/loginCode/loginCode.js b/pages/loginCode/loginCode.js index 8bb7580..191cd18 100644 --- a/pages/loginCode/loginCode.js +++ b/pages/loginCode/loginCode.js @@ -1,5 +1,5 @@ import request from '~/api/request'; - +import {resetTokenInvalid } from '~/api/request'; Page({ data: { code: '', @@ -108,6 +108,7 @@ Page({ // }); // return; // } + resetTokenInvalid() const res = await request('patient/code_login', 'post', { code: this.data.code,