完善请求拦截器代码,实现从pinia中读取数据

This commit is contained in:
carry 2025-02-14 23:14:29 +08:00
parent dd9a30c94e
commit 119fb96767

View File

@ -1,5 +1,5 @@
import axios from 'axios'; import axios from 'axios';
import { authService } from './authService'; import { useAuthStore } from '../store/userStore';
// 创建axios实例 // 创建axios实例
const apiClient = axios.create({ const apiClient = axios.create({
@ -12,8 +12,8 @@ const apiClient = axios.create({
// 请求拦截器 // 请求拦截器
apiClient.interceptors.request.use( apiClient.interceptors.request.use(
async (config) => { async (config) => {
// 从localStorage获取access_token const store = useAuthStore();
const accessToken = localStorage.getItem('access_token'); const accessToken = store.accessToken;
if (accessToken) { if (accessToken) {
config.headers.Authorization = `Bearer ${accessToken}`; config.headers.Authorization = `Bearer ${accessToken}`;
@ -37,21 +37,11 @@ apiClient.interceptors.response.use(
originalRequest._retry = true; originalRequest._retry = true;
try { try {
// 获取refresh_token const store = useAuthStore();
const refreshToken = localStorage.getItem('refresh_token'); await store.refreshTokenMethod();
if (!refreshToken) {
throw new Error('No refresh token available');
}
// 刷新token
const { access_token, refresh_token } = await authService.refreshToken(refreshToken);
// 保存新token
localStorage.setItem('access_token', access_token);
localStorage.setItem('refresh_token', refresh_token);
// 重试原始请求 // 重试原始请求
originalRequest.headers.Authorization = `Bearer ${access_token}`; originalRequest.headers.Authorization = `Bearer ${store.accessToken}`;
return apiClient(originalRequest); return apiClient(originalRequest);
} catch (refreshError) { } catch (refreshError) {
// 刷新token失败跳转到登录页 // 刷新token失败跳转到登录页