73 lines
1.9 KiB
TypeScript
73 lines
1.9 KiB
TypeScript
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 };
|