Localstorage的简易封装实现cookie的部分功能

实现想法

我们可以在登录验证通过时将一个key为cookie,value为字符串+时间戳的值存入localstorage(以下简称ls)。以后每次登录页面都会检验ls的库中是否有该value,获取当前时间戳和存储时的时间戳进行比较是否超时。

先封装一个setcookie

 function SetCookie(value, savetime) {
    var settime = savetime * 1000 * 60 * 60 *24//第二个参数的单位即为/天
    var setdate = new Date().getTime()//获取当前时间戳
    localStorage.setItem('cookie', value + ';' + settime + ';' + savedate)
  }

在每次打开页面我们验证ls中是否存在cookie

(function getCookie() {
    var x = localStorage.getItem('cookie')

    if (x) {
      var n = x.split(';')
      var t = new Date().getTime()
      console.log(n[2])
      console.log(t)
      if (t - n[2] < n[1]) {
        alert('欢迎回来:' + n[0])
      }
      else {
        var username = prompt('请输入你的用户名', '')
        if (username != null & xx != '')
          SetCookie(username, 10)
      }
    }
    else {
      var username = prompt('请输入你的用户名', '')
      if (username != null & username != '')
        SetCookie(username, 10)
    }
  })()

这每次进入页面都会判断你的cookie是否存在且是否超时,若超时需要重新输入形成新的value取代旧的

Localstorage用作cookie的缺点

ls简单来说就是一个本地的库,他可以同过setitem和getitem两种方法对你的数据进行存储和读取。

但是ls的存储必须要经过setitem的方法,也就是如果要通过时间戳的方式来设置有效时间。如果我知道了你存储的方式,伪造一个ls,那么比偷密码容易多了。

这种方式最好只适用一些demo和非上线项目。若不是请选用cookie或者session。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值