From 2248d518875c3018dcabac9c0f05ffa1ca4fdb20 Mon Sep 17 00:00:00 2001 From: molong Date: Tue, 10 Feb 2026 21:20:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E7=99=BB=E5=BD=95token?= =?UTF-8?q?=E7=9A=84bug=EF=BC=8C=E7=A7=BB=E9=99=A4refreshtoken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/admin/src/api/auth.js | 5 -- resources/admin/src/stores/modules/user.js | 13 +---- resources/admin/src/utils/request.js | 58 ++-------------------- 3 files changed, 7 insertions(+), 69 deletions(-) diff --git a/resources/admin/src/api/auth.js b/resources/admin/src/api/auth.js index ad2c613..4328c1b 100644 --- a/resources/admin/src/api/auth.js +++ b/resources/admin/src/api/auth.js @@ -12,11 +12,6 @@ export default { return await request.post('auth/logout') }, }, - refresh: { - post: async function () { - return await request.post('auth/refresh') - }, - }, me: { get: async function () { return await request.get('auth/me') diff --git a/resources/admin/src/stores/modules/user.js b/resources/admin/src/stores/modules/user.js index 14e5eb9..6ff2ff3 100644 --- a/resources/admin/src/stores/modules/user.js +++ b/resources/admin/src/stores/modules/user.js @@ -4,11 +4,10 @@ import { resetRouter } from '../../router' import { customStorage } from '../persist' import userRoutes from '@/config/routes' -export const useUserStore = defineStore( + export const useUserStore = defineStore( 'user', () => { const token = ref('') - const refreshToken = ref('') const userInfo = ref(null) const menu = ref([]) const permissions = ref([]) @@ -18,11 +17,6 @@ export const useUserStore = defineStore( token.value = newToken } - // 设置 refresh token - function setRefreshToken(newRefreshToken) { - refreshToken.value = newRefreshToken - } - // 设置用户信息 function setUserInfo(info) { userInfo.value = info @@ -79,7 +73,6 @@ export const useUserStore = defineStore( // 登出 function logout() { token.value = '' - refreshToken.value = '' userInfo.value = null menu.value = [] @@ -94,11 +87,9 @@ export const useUserStore = defineStore( return { token, - refreshToken, userInfo, menu, setToken, - setRefreshToken, setUserInfo, setMenu, getMenu, @@ -112,7 +103,7 @@ export const useUserStore = defineStore( persist: { key: 'user-store', storage: customStorage, - pick: ['token', 'refreshToken', 'userInfo', 'menu'] + pick: ['token', 'userInfo', 'menu'] } } ) diff --git a/resources/admin/src/utils/request.js b/resources/admin/src/utils/request.js index 3e3f9b9..5126922 100644 --- a/resources/admin/src/utils/request.js +++ b/resources/admin/src/utils/request.js @@ -9,11 +9,6 @@ const request = axios.create({ baseURL: config.API_URL, }); -// 是否正在刷新 token -let isRefreshing = false; -// 存储待重试的请求 -let requests = []; - // 请求拦截器 request.interceptors.request.use( (config) => { @@ -62,45 +57,11 @@ request.interceptors.response.use( // 401 未授权 - token 过期或无效 if (status === 401) { - // 如果正在刷新 token,将请求加入队列 - if (isRefreshing) { - return new Promise((resolve) => { - requests.push((token) => { - // 重新设置请求头 - error.config.headers["Authorization"] = - `Bearer ${token}`; - resolve(http(error.config)); - }); - }); - } - - // 标记正在刷新 - isRefreshing = true; - - try { - // 尝试刷新 token - const newToken = await refreshToken(); - - // 刷新成功,更新 token - userStore.setToken(newToken); - - // 执行队列中的所有请求 - requests.forEach((callback) => callback(newToken)); - requests = []; - - // 重新执行当前请求 - error.config.headers["Authorization"] = `Bearer ${newToken}`; - return request(error.config); - } catch (refreshError) { - // 刷新失败,清空队列并跳转登录页 - requests = []; - userStore.logout(); - router.push("/login"); - message.error("登录已过期,请重新登录"); - return Promise.reject(refreshError); - } finally { - isRefreshing = false; - } + // 直接登出并跳转到登录页 + userStore.logout(); + router.push("/login"); + message.error("登录已过期,请重新登录"); + return Promise.reject(error); } // 403 禁止访问 @@ -128,13 +89,4 @@ request.interceptors.response.use( }, ); -// 刷新 token 的方法 -async function refreshToken() { - // 刷新接口需要携带当前token在请求头中 - const response = await request.post('auth/refresh'); - - // 返回格式为 { code, data: { token } } - return response.data.token; -} - export default request;