解决登录token的bug,移除refreshtoken

This commit is contained in:
2026-02-10 21:20:21 +08:00
parent 7aa428d932
commit 2248d51887
3 changed files with 7 additions and 69 deletions

View File

@@ -12,11 +12,6 @@ export default {
return await request.post('auth/logout') return await request.post('auth/logout')
}, },
}, },
refresh: {
post: async function () {
return await request.post('auth/refresh')
},
},
me: { me: {
get: async function () { get: async function () {
return await request.get('auth/me') return await request.get('auth/me')

View File

@@ -4,11 +4,10 @@ import { resetRouter } from '../../router'
import { customStorage } from '../persist' import { customStorage } from '../persist'
import userRoutes from '@/config/routes' import userRoutes from '@/config/routes'
export const useUserStore = defineStore( export const useUserStore = defineStore(
'user', 'user',
() => { () => {
const token = ref('') const token = ref('')
const refreshToken = ref('')
const userInfo = ref(null) const userInfo = ref(null)
const menu = ref([]) const menu = ref([])
const permissions = ref([]) const permissions = ref([])
@@ -18,11 +17,6 @@ export const useUserStore = defineStore(
token.value = newToken token.value = newToken
} }
// 设置 refresh token
function setRefreshToken(newRefreshToken) {
refreshToken.value = newRefreshToken
}
// 设置用户信息 // 设置用户信息
function setUserInfo(info) { function setUserInfo(info) {
userInfo.value = info userInfo.value = info
@@ -79,7 +73,6 @@ export const useUserStore = defineStore(
// 登出 // 登出
function logout() { function logout() {
token.value = '' token.value = ''
refreshToken.value = ''
userInfo.value = null userInfo.value = null
menu.value = [] menu.value = []
@@ -94,11 +87,9 @@ export const useUserStore = defineStore(
return { return {
token, token,
refreshToken,
userInfo, userInfo,
menu, menu,
setToken, setToken,
setRefreshToken,
setUserInfo, setUserInfo,
setMenu, setMenu,
getMenu, getMenu,
@@ -112,7 +103,7 @@ export const useUserStore = defineStore(
persist: { persist: {
key: 'user-store', key: 'user-store',
storage: customStorage, storage: customStorage,
pick: ['token', 'refreshToken', 'userInfo', 'menu'] pick: ['token', 'userInfo', 'menu']
} }
} }
) )

View File

@@ -9,11 +9,6 @@ const request = axios.create({
baseURL: config.API_URL, baseURL: config.API_URL,
}); });
// 是否正在刷新 token
let isRefreshing = false;
// 存储待重试的请求
let requests = [];
// 请求拦截器 // 请求拦截器
request.interceptors.request.use( request.interceptors.request.use(
(config) => { (config) => {
@@ -62,45 +57,11 @@ request.interceptors.response.use(
// 401 未授权 - token 过期或无效 // 401 未授权 - token 过期或无效
if (status === 401) { if (status === 401) {
// 如果正在刷新 token将请求加入队列 // 直接登出并跳转到登录页
if (isRefreshing) { userStore.logout();
return new Promise((resolve) => { router.push("/login");
requests.push((token) => { message.error("登录已过期,请重新登录");
// 重新设置请求头 return Promise.reject(error);
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;
}
} }
// 403 禁止访问 // 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; export default request;