Ver Fonte

V103token过期判断

liuq há 2 semanas atrás
pai
commit
b7b838e906
2 ficheiros alterados com 10 adições e 5 exclusões
  1. 1 1
      pages/app-center/index.vue
  2. 9 4
      utils/api.js

+ 1 - 1
pages/app-center/index.vue

@@ -369,7 +369,7 @@
 					this.categories = [{ id: 'recent', name: '全部应用' }, ...Array.from(catMap.values())]
 					this.activeCategoryId = 'recent'
 				} catch (e) {
-					// utils/api.js 的 request 已经做了网络/401 提示
+					// utils/api.js 的 request 已经做了网络、401/403 登录态提示
 					uni.showToast({ title: '加载应用失败', icon: 'none' })
 				} finally {
 					this.launchpadLoading = false

+ 9 - 4
utils/api.js

@@ -15,7 +15,12 @@ export function getToken() {
 	}
 }
 
-/** 401 未授权:清 token 并回登录页(网络错误勿调用) */
+/** 后端 JWT 校验失败返回 403(无 401);401/403 均视为需重新登录 */
+function isAuthFailureStatus(statusCode) {
+	return statusCode === 401 || statusCode === 403
+}
+
+/** 未授权 / 凭证无效:清 token 并回登录页(网络错误勿调用) */
 function clearSessionAndRedirectToLogin(toastTitle = '请先登录') {
 	setToken('')
 	uni.showToast({ title: toastTitle, icon: 'none' })
@@ -62,7 +67,7 @@ function request(options) {
 				...options.header
 			},
 			success: (res) => {
-				if (res.statusCode === 401) {
+				if (isAuthFailureStatus(res.statusCode)) {
 					clearSessionAndRedirectToLogin()
 					reject(new Error('请先登录'))
 					return
@@ -99,7 +104,7 @@ export function getMessages(token, otherUserId, params = {}) {
 				Authorization: token ? `Bearer ${token}` : ''
 			},
 			success: (res) => {
-				if (res.statusCode === 401) {
+				if (isAuthFailureStatus(res.statusCode)) {
 					clearSessionAndRedirectToLogin()
 					reject(new Error('请先登录'))
 					return
@@ -161,7 +166,7 @@ export function uploadFile(token, filePath, fileName, onProgress) {
 				Authorization: token ? `Bearer ${token}` : ''
 			},
 			success: (res) => {
-				if (res.statusCode === 401) {
+				if (isAuthFailureStatus(res.statusCode)) {
 					clearSessionAndRedirectToLogin()
 					reject(new Error('请先登录'))
 					return