/** * Access Token 管理工具 * 基于 localStorage 存取 access token 和用户信息;refresh token 已改为 httpOnly Cookie,不在这里管理。 */ const TOKEN_KEY = 'sb_token' const USER_KEY = 'sb_user' export function getToken(): string { return localStorage.getItem(TOKEN_KEY) || '' } export function setToken(token: string): void { localStorage.setItem(TOKEN_KEY, token) } export function clearTokens(): void { localStorage.removeItem(TOKEN_KEY) localStorage.removeItem(USER_KEY) } export function getUserInfo(): Record { try { return JSON.parse(localStorage.getItem(USER_KEY) || '{}') } catch { return {} } } export function setUserInfo(info: Record): void { localStorage.setItem(USER_KEY, JSON.stringify(info)) } export function isLoggedIn(): boolean { return !!getToken() } /** * 清除已废弃的 refresh token 本地存储(历史兼容) */ export function cleanupLegacyTokens(): void { localStorage.removeItem('sb_refresh_token') }