storage.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { encrypt, decrypt } from '@/common/crypto.js'
  2. // 在开发环境下不需要加密数据
  3. const encryptFlag = false
  4. // 预设字段头
  5. const prefix = 'HEHE_'
  6. // 缓存有效期 默认有效期为15天
  7. const expiredTime = 15 * 24 * 60 * 60 * 1000
  8. // 从缓存中读取数据(期限)
  9. export function setStorage(key, value, options = {}) {
  10. if (!options.expiredTime) {
  11. options.expiredTime = expiredTime
  12. }
  13. const nowTime = Date.now()
  14. // 加密
  15. if (encryptFlag) {
  16. value = encrypt(value)
  17. }
  18. const payload = {
  19. expiredTime: nowTime + options.expiredTime,
  20. data: value
  21. }
  22. key = prefix + key
  23. uni.setStorageSync(key, payload)
  24. }
  25. // 将数据添加到缓存中(期限)
  26. export function getStorage(key) {
  27. key = prefix + key
  28. const nowTime = Date.now()
  29. const payload = uni.getStorageSync(key)
  30. if (nowTime > payload.expiredTime) {
  31. uni.removeStorageSync(key)
  32. return null
  33. }
  34. // 解密
  35. if (encryptFlag) {
  36. payload.data = decrypt(payload.data)
  37. }
  38. return payload.data
  39. }
  40. const install = Vue => {
  41. Vue.prototype.$setStorage = setStorage
  42. Vue.prototype.$getStorage = getStorage
  43. }
  44. export default install