import { authApi } from './auth'; // 设置token到localStorage export const setToken = (token: string) => { if (typeof window !== 'undefined') { localStorage.setItem('token', token); } }; // 获取token export const getToken = (): string | null => { if (typeof window !== 'undefined') { return localStorage.getItem('token'); } return null; }; // 清除token export const clearToken = () => { if (typeof window !== 'undefined') { localStorage.removeItem('token'); localStorage.removeItem('userInfo'); localStorage.removeItem('token_expired'); localStorage.removeItem('s2_accountId'); } }; // 验证token是否有效 export const validateToken = async (): Promise => { try { const response = await authApi.getUserInfo(); return response.code === 200; } catch (error) { console.error('Token验证失败:', error); return false; } }; // 刷新令牌 export const refreshAuthToken = async (): Promise => { if (typeof window === 'undefined') { return false; } try { const response = await authApi.refreshToken(); if (response.code === 200 && response.data?.token) { setToken(response.data.token); // 更新过期时间 if (response.data.token_expired) { localStorage.setItem('token_expired', response.data.token_expired); } return true; } return false; } catch (error) { console.error('刷新Token失败:', error); return false; } }; // 检查token是否即将过期 export const isTokenExpiringSoon = (): boolean => { if (typeof window === 'undefined') { return false; } const tokenExpired = localStorage.getItem('token_expired'); if (!tokenExpired) return true; try { const expiredTime = new Date(tokenExpired).getTime(); const currentTime = new Date().getTime(); // 提前10分钟认为即将过期 return currentTime >= (expiredTime - 10 * 60 * 1000); } catch (error) { console.error('解析token过期时间失败:', error); return true; } }; // 检查token是否已过期 export const isTokenExpired = (): boolean => { if (typeof window === 'undefined') { return false; } const tokenExpired = localStorage.getItem('token_expired'); if (!tokenExpired) return true; try { const expiredTime = new Date(tokenExpired).getTime(); const currentTime = new Date().getTime(); // 提前5分钟认为过期,给刷新留出时间 return currentTime >= (expiredTime - 5 * 60 * 1000); } catch (error) { console.error('解析token过期时间失败:', error); return true; } };