96 lines
2.8 KiB
TypeScript
96 lines
2.8 KiB
TypeScript
/**
|
|
* Token调试工具
|
|
* 用于诊断token相关的问题
|
|
*/
|
|
|
|
export const debugToken = () => {
|
|
console.group('🔍 Token调试信息');
|
|
|
|
// 检查环境
|
|
console.log('1. 环境检查:');
|
|
console.log(' - 是否在浏览器环境:', typeof window !== 'undefined');
|
|
console.log(' - localStorage是否可用:', typeof localStorage !== 'undefined');
|
|
|
|
// 检查localStorage中的token
|
|
console.log('\n2. LocalStorage检查:');
|
|
try {
|
|
const token = localStorage.getItem('auth_token');
|
|
console.log(' - auth_token存在:', !!token);
|
|
if (token) {
|
|
console.log(' - token长度:', token.length);
|
|
console.log(' - token前20字符:', token.substring(0, 20) + '...');
|
|
console.log(' - token类型:', typeof token);
|
|
}
|
|
} catch (error) {
|
|
console.error(' - localStorage访问错误:', error);
|
|
}
|
|
|
|
// 检查Cookie中的token
|
|
console.log('\n3. Cookie检查:');
|
|
try {
|
|
const cookies = document.cookie;
|
|
const hasAuthToken = cookies.includes('auth_token=');
|
|
console.log(' - Cookie中有auth_token:', hasAuthToken);
|
|
if (hasAuthToken) {
|
|
const tokenMatch = cookies.match(/auth_token=([^;]+)/);
|
|
const cookieToken = tokenMatch ? tokenMatch[1] : null;
|
|
console.log(' - Cookie token前20字符:', cookieToken?.substring(0, 20) + '...');
|
|
}
|
|
} catch (error) {
|
|
console.error(' - Cookie访问错误:', error);
|
|
}
|
|
|
|
// 检查axios默认headers
|
|
console.log('\n4. Axios配置检查:');
|
|
import('./client').then(({ apiClient }) => {
|
|
console.log(' - 默认baseURL:', apiClient.defaults.baseURL);
|
|
console.log(' - 默认headers:', apiClient.defaults.headers);
|
|
console.log(' - 拦截器数量:', {
|
|
request: apiClient.interceptors.request.handlers?.length || 0,
|
|
response: apiClient.interceptors.response.handlers?.length || 0
|
|
});
|
|
});
|
|
|
|
console.groupEnd();
|
|
};
|
|
|
|
/**
|
|
* 测试token是否正确添加到请求中
|
|
*/
|
|
export const testTokenInRequest = async () => {
|
|
console.group('🧪 Token请求测试');
|
|
|
|
try {
|
|
const { apiClient } = await import('./client');
|
|
|
|
// 创建一个测试请求(不会真正发送)
|
|
const testConfig = {
|
|
method: 'get',
|
|
url: '/test',
|
|
headers: {}
|
|
};
|
|
|
|
// 手动调用请求拦截器
|
|
const processedConfig = apiClient.interceptors.request.handlers[0]?.fulfilled?.(testConfig);
|
|
|
|
console.log('测试请求配置:');
|
|
console.log(' - URL:', processedConfig?.url);
|
|
console.log(' - Headers:', processedConfig?.headers);
|
|
console.log(' - Authorization header:', processedConfig?.headers?.Authorization);
|
|
|
|
} catch (error) {
|
|
console.error('测试请求配置失败:', error);
|
|
}
|
|
|
|
console.groupEnd();
|
|
};
|
|
|
|
/**
|
|
* 在控制台中运行的快速诊断
|
|
*/
|
|
export const quickDiagnose = () => {
|
|
debugToken();
|
|
setTimeout(() => {
|
|
testTokenInRequest();
|
|
}, 100);
|
|
}; |