import { useCache, CACHE_KEY } from "@hooks/useCache"; import { decrypt, encrypt } from "@utils/jsencrypt"; const { wsCache } = useCache(); const AccessTokenKey = "ACCESS_TOKEN"; const RefreshTokenKey = "REFRESH_TOKEN"; type TokenType = { id: number; // 编号 accessToken: string; // 访问令牌 refreshToken: string; // 刷新令牌 userId: number; // 用户编号 userType?: number; //用户类型 clientId?: string; //客户端编号 expiresTime: number; //过期时间 }; // 获取token export const getAccessToken = () => { // 此处与TokenKey相同,此写法解决初始化时Cookies中不存在TokenKey报错 const accessToken = wsCache.get(AccessTokenKey); return accessToken ? accessToken : wsCache.get("ACCESS_TOKEN"); }; // 刷新token export const getRefreshToken = () => { return wsCache.get(RefreshTokenKey); }; // 设置token export const setToken = (token: TokenType) => { wsCache.set(RefreshTokenKey, token.refreshToken); wsCache.set(AccessTokenKey, token.accessToken); }; // 删除token export const removeToken = () => { wsCache.delete(AccessTokenKey); wsCache.delete(RefreshTokenKey); }; /** 格式化token(jwt格式) */ export const formatToken = (token: string): string => { return "Bearer " + token; }; // ========== 账号相关 ========== export type LoginFormType = { tenantName?: string; username: string; password: string; rememberMe?: boolean; }; export const getLoginForm = () => { const loginForm: LoginFormType = wsCache.get(CACHE_KEY.LoginForm); if (loginForm) { loginForm.password = decrypt(loginForm.password) as string; } return loginForm; }; export const setLoginForm = (loginForm: LoginFormType) => { loginForm.password = encrypt(loginForm.password) as string; wsCache.set(CACHE_KEY.LoginForm, loginForm, { exp: 30 * 24 * 60 * 60 }); }; export const removeLoginForm = () => { wsCache.delete(CACHE_KEY.LoginForm); };