27 lines
812 B
TypeScript
27 lines
812 B
TypeScript
import { StorageLike } from 'pinia-plugin-persistedstate'
|
|
import CryptoJS from 'crypto-js'
|
|
|
|
const SECRET_KEY = import.meta.env.VITE_SECRET_KEY // 自定义加密密钥
|
|
|
|
// 自定义加密存储
|
|
export const SelfStorage: StorageLike = {
|
|
setItem(key: string, value: string) {
|
|
// 加密值
|
|
const encryptedValue = CryptoJS.AES.encrypt(value, SECRET_KEY).toString()
|
|
|
|
// 存储加密后的值
|
|
localStorage.setItem(key, encryptedValue)
|
|
},
|
|
getItem(key: string): string | null {
|
|
// 获取加密值
|
|
const encryptedValue = localStorage.getItem(key)
|
|
if (encryptedValue) {
|
|
// 解密
|
|
const bytes = CryptoJS.AES.decrypt(encryptedValue, SECRET_KEY)
|
|
const decryptedValue = bytes.toString(CryptoJS.enc.Utf8)
|
|
return decryptedValue || null
|
|
}
|
|
return null
|
|
},
|
|
}
|