const TOKEN_KEY = 'token'; // RBAC 系统使用的 token key,与 isLogin 保持一致 const RBAC_TOKEN_KEY = 'rbac_access_token'; const SSO_SESSION_FLAG = 'rbac_sso_session'; function isSsoSession(): boolean { return sessionStorage.getItem(SSO_SESSION_FLAG) === '1'; } const isLogin = () => { if (isSsoSession()) { return !!( sessionStorage.getItem(TOKEN_KEY) || sessionStorage.getItem(RBAC_TOKEN_KEY) ); } // 同时检查两种 token 存储,确保登录后首次跳转能正确识别 return !!(localStorage.getItem(TOKEN_KEY) || localStorage.getItem(RBAC_TOKEN_KEY)); }; const getToken = () => { if (isSsoSession()) { return sessionStorage.getItem(TOKEN_KEY) || sessionStorage.getItem(RBAC_TOKEN_KEY); } return localStorage.getItem(TOKEN_KEY); }; const setToken = (token: string, sessionOnly = false) => { if (sessionOnly) { sessionStorage.setItem(SSO_SESSION_FLAG, '1'); sessionStorage.setItem(TOKEN_KEY, token); sessionStorage.setItem(RBAC_TOKEN_KEY, token); return; } localStorage.setItem(TOKEN_KEY, token); }; const clearToken = () => { localStorage.removeItem(TOKEN_KEY); sessionStorage.removeItem(TOKEN_KEY); sessionStorage.removeItem(RBAC_TOKEN_KEY); sessionStorage.removeItem(SSO_SESSION_FLAG); }; export { isLogin, getToken, setToken, clearToken };