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

定义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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值