lty/qy-lty-admin/lib/api/token-debug.ts
2026-03-17 13:17:02 +08:00

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);
};