fix(frontend): 给全局 axios 实例添加 Token 拦截器修复多页面列表加载失败

- 16 个页面文件 100+ 处直接使用 axios 而非封装的 api 实例
- 导致请求不携带 Token,后端返回 401 列表加载失败
- 给全局 axios 默认实例添加请求/响应拦截器自动附加 Token
This commit is contained in:
zhang96110
2026-04-01 04:51:24 +00:00
parent fa65eecf5e
commit fa26964cbb
+25
View File
@@ -2,6 +2,31 @@ import axios from 'axios';
import { API_CONFIG } from '../config/api';
import secureStorage, { TOKEN_KEY } from '../utils/secureStorage';
// 给全局 axios 默认实例添加 Token 拦截器
// 确保所有页面中直接使用 axios.get/post 的请求也能自动携带 Token
axios.interceptors.request.use(config => {
const token = secureStorage.get(TOKEN_KEY);
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
});
axios.interceptors.response.use(
response => response,
error => {
if (error.response?.status === 401) {
const currentPath = window.location.pathname;
if (!currentPath.startsWith('/login')) {
secureStorage.remove(TOKEN_KEY);
secureStorage.remove('user');
window.location.href = '/login';
}
}
return Promise.reject(error);
}
);
const api = axios.create({
baseURL: API_CONFIG.baseURL,
timeout: API_CONFIG.timeout,