This commit is contained in:
nepiedg
2026-02-23 22:24:29 +08:00
parent ff68f7f3ae
commit 031eef9643
7 changed files with 494 additions and 148 deletions
+18 -4
View File
@@ -1,9 +1,19 @@
import { BASE_URL } from '@/config'
import { storage, SESSION_KEY } from '@/utils/storage'
import { login as authLogin } from './auth'
// 是否为 token 失效(HTTP 401 或 body code 401,如 invalid token
function isInvalidToken(res) {
if (res.statusCode === 401) return true
const body = res.data
if (body && body.code === 401) return true
return false
}
export const request = {
async request(options) {
const sessionKey = storage.get(SESSION_KEY)
const isRetryAfter401 = options._retryAfter401 === true
return new Promise((resolve, reject) => {
uni.request({
@@ -15,11 +25,15 @@ export const request = {
'Authorization': sessionKey ? `Bearer ${sessionKey}` : ''
},
success: async (res) => {
if (res.statusCode === 401) {
const { login } = await import('./auth')
if (isInvalidToken(res)) {
if (isRetryAfter401) {
reject(new Error(res.data?.message || 'invalid token'))
return
}
try {
await login()
resolve(this.request(options))
await authLogin()
const nextOpts = { ...options, _retryAfter401: true }
resolve(this.request(nextOpts))
} catch (e) {
reject(e)
}