storage.js 995 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { encrypt, decrypt } from '@/utils/crypto'
  2. const encryptFlag = false
  3. // 将数据添加到缓存中(期限)
  4. export function setStorage(key, value, options = {}) {
  5. if (!options.expiredTime) {
  6. // 默认有效期为45天
  7. options.expiredTime = 45 * 24 * 60 * 60 * 1000
  8. }
  9. const nowTime = Date.now()
  10. // 加密
  11. if (encryptFlag) {
  12. value = encrypt(value)
  13. }
  14. const payload = {
  15. expiredTime: nowTime + options.expiredTime,
  16. data: value,
  17. }
  18. key = 'zp_' + key
  19. localStorage.setItem(key, JSON.stringify(payload))
  20. }
  21. // 从缓存中读取数据(期限)
  22. export function getStorage(key) {
  23. key = 'zp_' + key
  24. const nowTime = Date.now()
  25. let payload = localStorage.getItem(key)
  26. if (!payload) {
  27. return null
  28. }
  29. payload = JSON.parse(payload)
  30. if (nowTime > payload.expiredTime) {
  31. localStorage.removeItem(key)
  32. return null
  33. }
  34. // 解密
  35. if (encryptFlag) {
  36. payload.data = JSON.parse(decrypt(payload.data))
  37. }
  38. return payload.data
  39. }