• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    localStorage 设置过期时间的方法实现

    localStorage除非人为手动清除,否则会一直存放在浏览器中,但是很多情况下我们可能需要localStorage有一个过期时间,比如我们将用户身份认证 token 保存在客户端,1周之内有效,超过一周则要重新登录,那么这种需求该怎么实现呢

    要知道,localStorage本身并没有提供过期机制,既然如此,那就只能我们自己来实现了,我们可以直接给其原型上加上这样一个方法

    Storage.prototype.setExpire=(key,value,expire) =>{
     };
    Storage.setExpire(key,value,expire);

    要过期就必须要记录时间,我们的思路是,设置值得时候就将当前时间记录进去,然后获取值得时候判断一下当前时间和之前的时间差是否在某个范围之内,若果超出范围,则清空当前项,并返回null

    要将时间加入到值中就必须要定义一个格式

    Storage.prototype.setExpire=(key, value, expire) =>{
        let obj={
            data:value,
            time:Date.now(),
            expire:expire
        };
        localStorage.setItem(key,JSON.stringify(obj));
    }

    包括下面3个字段

    因为localStorage 设置的值不能为对象, 所以这里使用了 JSON.stringify 方法将其转为字符串,最终在使用的时候得转回来。

    接着我们添加一个获取的方法

    Storage.prototype.getExpire= key =>{
        let val =localStorage.getItem(key);
        if(!val){
            return val;
        }
        val =JSON.parse(val);
        if(Date.now()-val.time>val.expire){
            localStorage.removeItem(key);
            return null;
        }
        return val.data;
    }
    

    我们可以先测试一下

    localStorage.setExpire("token",'xxxxxx',5000);
    window.setInterval(()=>{
        console.log(localStorage.getExpire("token"));
    },1000)
    

    本质上我们的思路并非是要定时去清理过期的项,而是在获取的时候判断是否过期,如果过期再去清除该项。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    上一篇:canvas实现俄罗斯方块的方法示例
    下一篇:webapp字号大小跟随系统字号大小缩放的示例代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    localStorage 设置过期时间的方法实现 localStorage,设置,过期,时,