实现自带加密及过期时间的本地存储

定义base64加密
import { Base64 } from 'js-base64'

class BaseData {
  constructor (props, ...arge) {
    // 定义加盐项
    this.salting = (props && props.baseString) || 'admin-git-use'
  }

  encryptString (name) {
    let str = null
    // 判断是否为对象
    if (name instanceof Object) {
      str = JSON.stringify(name)
    }
    // 加盐
    return Base64.encode(str || name + this.salting)
  }

  decodeString (name) {
    let decodeName = Base64.decode(name) || ''

    if (decodeName && decodeName.split) {
      let arr = decodeName.split(this.salting)
      let obj = arr[0]
      let out = null
      // 判断是否是对象
      obj.indexOf('{') !== -1 ? out = JSON.parse(obj) : out = obj

      return out
    } else {
      return ''
    }
  }
}

export default BaseData

依赖:js-base64

定义本地存储
import store from 'store'
import BaseData from '@/utils/basedata'

let base = new BaseData()

class LocalData {
  constructor (props, ...arge) {
    this.expires = 10 * 60 * 1000 // 默认十分钟
  }

  // 设置本地存储
  setStore (name, data, during = this.expires) {
    // 临时变量 用来拼接过期时间
    let tempData = {
      time: this.getNowTime(),
      during,
      data
    }

    // 设置存储
    store.set(`${name}`, base.encryptString(tempData))
  }

  // 获取本地存储
  getStore (name) {
    let data = store.get(name)
    if (data) {
      let tempData = base.decodeString(data)

      if (tempData.time && tempData.during) {
        let timer = tempData.time + tempData.during
        if (this.getNowTime() < (timer)) {
          return tempData.data
        } else {
          return ''
        }
      } else {
        return ''
      }
    } else {
      return ''
    }
  }

  // 删除缓存
  deleteStore (name) {
    store.remove(name)
  }

  // 获取当前时间
  getNowTime () {
    return Date.parse(new Date())
  }
}

export default LocalData

依赖:store

猜你喜欢

转载自blog.csdn.net/Nick_YangXiaoTong/article/details/81347144