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


Posted in HTML / CSS onDecember 21, 2018

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个字段

  • data 实际的值
  • time 当前时间戳
  • expire 过期时间

因为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)

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

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

HTML / CSS 相关文章推荐
CSS3控制HTML元素动画效果
Feb 08 HTML / CSS
CSS3对背景图片的裁剪及尺寸和位置的设定方法
Mar 07 HTML / CSS
CSS3实现苹果手机解锁的字体闪亮效果示例
Jan 05 HTML / CSS
基于HTML5的WebSocket的实例代码
Aug 15 HTML / CSS
HTML5中微数据概述及在搜索引擎中的使用举例
Feb 07 HTML / CSS
html5在移动端的屏幕适应问题示例探讨
Jun 15 HTML / CSS
如何利用input事件来监听移动端的输入
Apr 15 HTML / CSS
字中字效果的实现【html5实例】
May 03 HTML / CSS
详解html5页面 rem 布局适配方法
Jan 12 HTML / CSS
canvas裁剪clip()函数的具体使用
Mar 01 HTML / CSS
HTML5声音录制/播放功能的实现代码
May 03 HTML / CSS
bootstrapv4轮播图去除两侧阴影及线框的方法
Feb 15 HTML / CSS
webapp字号大小跟随系统字号大小缩放的示例代码
Dec 26 #HTML / CSS
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
Jan 05 #HTML / CSS
HTML5实现表单自动验证功能实例代码
Jan 11 #HTML / CSS
HTML5 File接口在web页面上使用文件下载
Feb 27 #HTML / CSS
使用phonegap检测网络状态的方法
Mar 30 #HTML / CSS
HTML5文档结构标签
Apr 21 #HTML / CSS
HTML5的文档结构和新增标签完全解析
Apr 21 #HTML / CSS
You might like
php写入、删除与复制文件的方法
2015/06/20 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
2018/05/16 PHP
javascript实现的动态文字变换
2007/07/28 Javascript
this和执行上下文实现代码
2010/07/01 Javascript
jQuery 数据缓存模块进化史详细介绍
2012/11/19 Javascript
jQuery中获取Radio元素值的方法
2013/07/02 Javascript
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
原生javaScript做得动态表格(注释写的很清楚)
2013/12/29 Javascript
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
jQuery 处理页面的事件详解
2015/01/20 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
2015/07/31 Javascript
JavaScript的设计模式经典之建造者模式
2016/02/24 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
微信小程序数据存储与取值详解
2018/01/30 Javascript
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
Python lambda和Python def区别分析
2014/11/30 Python
Python赋值语句后逗号的作用分析
2015/06/08 Python
python 回调函数和回调方法的实现分析
2016/03/23 Python
Python通过matplotlib画双层饼图及环形图简单示例
2017/12/15 Python
Python实现一个数组除以一个数的例子
2019/07/20 Python
Django使用中间件解决前后端同源策略问题
2019/09/02 Python
通过Python实现一个简单的html页面
2020/05/16 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
申报职称专业技术个人的自我评价
2013/12/12 职场文书
院领导写的就业推荐信
2014/03/09 职场文书
就业推荐表自我鉴定
2014/03/21 职场文书
三项教育活动实施方案
2014/03/30 职场文书
小学三年级学生评语
2014/04/22 职场文书
室内设计专业自荐信
2014/05/31 职场文书
生物技术专业求职信
2014/06/10 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
公司管理制度范本
2015/08/03 职场文书