完善请求拦截器代码,实现从pinia中读取数据
This commit is contained in:
parent
dd9a30c94e
commit
119fb96767
@ -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失败,跳转到登录页
|
||||||
|
Loading…
x
Reference in New Issue
Block a user