import Cookies from 'js-cookie'; /** * 这些 key 属于登录态或用户会话上下文。 * 退出登录时只清理这部分数据,避免误删主题、语言、布局等本地个性化配置。 */ const SESSION_AUTH_KEYS = ['token', 'userInfo', 'userMenu', 'permissions']; /** * window.localStorage 浏览器永久缓存 * @method set 设置永久缓存 * @method get 获取永久缓存 * @method remove 移除永久缓存 * @method clear 移除全部永久缓存 */ export const Local = { // 设置永久缓存 set(key: string, val: any) { window.localStorage.setItem(key, JSON.stringify(val)); }, // 获取永久缓存 get(key: string) { let json: any = window.localStorage.getItem(key); return JSON.parse(json); }, // 移除永久缓存 remove(key: string) { window.localStorage.removeItem(key); }, // 移除全部永久缓存 clear() { window.localStorage.clear(); }, }; /** * window.sessionStorage 浏览器临时缓存 * @method set 设置临时缓存 * @method get 获取临时缓存 * @method remove 移除临时缓存 * @method clear 移除全部临时缓存 * @method clearAuth 移除登录态相关缓存 */ export const Session = { // 设置临时缓存 set(key: string, val: any) { if (key === 'token') return Cookies.set(key, val); window.sessionStorage.setItem(key, JSON.stringify(val)); }, // 获取临时缓存 get(key: string) { if (key === 'token') return Cookies.get(key); let json: any = window.sessionStorage.getItem(key); return JSON.parse(json); }, // 移除临时缓存 remove(key: string) { if (key === 'token') return Cookies.remove(key); window.sessionStorage.removeItem(key); }, // 移除全部临时缓存 clear() { Cookies.remove('token'); window.sessionStorage.clear(); }, // 只清理登录态相关缓存,保留非登录相关的页面状态与本地配置 clearAuth() { SESSION_AUTH_KEYS.forEach((key) => this.remove(key)); }, }; export { SESSION_AUTH_KEYS };