UNPKG

create-vvt

Version:

一个基于 Vite + Vue3 + TypeScript/JavaScript 的项目模板脚手架

75 lines (68 loc) 2.01 kB
import { AESEncryptor } from './crypt'; /** 加密本地 localStorage 存储 */ export const cryptLocalStorage = () => { const needCrypt = import.meta.env.MODE !== 'development'; return { getItem<T>(key: string): T | null | undefined { const value = localStorage.getItem(key); if (!value) { return null; } else if (value !== 'undefined' && value !== 'null') { const encryptedValue = needCrypt ? AESEncryptor.decrypt(value) : JSON.parse(value); if ( encryptedValue && Date.now() - encryptedValue.time > encryptedValue.expire ) { localStorage.removeItem(key); return null; } return encryptedValue.data; } }, setItem: (key: string, value: any, expires: number = 24 * 60) => { const options = { data: value, time: Date.now(), expire: expires * 60 * 1000 // 把分钟转为毫秒 }; localStorage.setItem( key, needCrypt ? AESEncryptor.encrypt(options) : JSON.stringify(options) ); }, removeItem: (key: string) => { localStorage.removeItem(key); }, clear: () => { localStorage.clear(); } }; }; /** 加密会话 sessionStorage 存储 */ export const cryptSessionStorage = () => { const needCrypt = import.meta.env.MODE !== 'development'; return { getItem<T>(key: string): T | null { const value = sessionStorage.getItem(key); if (!value || value === '' || value === 'undefined' || value === 'null') { return null; } else { return needCrypt ? AESEncryptor.decrypt(value) : JSON.parse(value); } }, setItem: (key: string, value: any) => { sessionStorage.setItem( key, needCrypt ? AESEncryptor.encrypt(value) : JSON.stringify(value) ); }, removeItem: (key: string) => { sessionStorage.removeItem(key); }, clear: () => { sessionStorage.clear(); } }; };