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的@media属性实现页面响应式布局示例代码
Feb 10 HTML / CSS
使用css3制作登录表单的步骤
Apr 07 HTML / CSS
一款利用纯css3实现的win8加载动画的实例分析
Dec 11 HTML / CSS
canvas之万花筒效果的简单实现(推荐)
Aug 16 HTML / CSS
css3编写浏览器背景渐变背景色的方法
Mar 05 HTML / CSS
使用html2canvas实现浏览器截图的示例代码
Jan 26 HTML / CSS
HTML5使用DOM进行自定义控制示例代码
Jun 08 HTML / CSS
HTML5中判断用户是否正在浏览页面的方法
May 03 HTML / CSS
使用HTML5中的contentEditable来将多行文本自动增高
Mar 01 HTML / CSS
基于html5 canvas做批改作业的小插件
May 20 HTML / CSS
html5使用window.postMessage进行跨域实现数据交互的一次实战
Feb 24 HTML / CSS
CSS 制作波浪效果的思路
May 18 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数据库配置文件一般做法分享
2012/07/07 PHP
header导出Excel应用示例
2014/01/24 PHP
PHP遍历数组的三种方法及效率对比分析
2015/02/12 PHP
codeigniter显示所有脚本执行时间的方法
2015/03/21 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
PHP生成加减算法方式的验证码实例
2018/03/12 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
学习ExtJS Panel常用方法
2009/10/07 Javascript
JS实现在Repeater控件中创建可隐藏区域的代码
2010/09/16 Javascript
js实现的折叠导航示例
2013/11/29 Javascript
浅谈EasyUI中编辑treegrid的方法
2015/03/01 Javascript
JavaScript数组去重的3种方法和代码实例
2015/07/01 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
jQuery快速实现商品数量加减的方法
2017/02/06 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
2017/08/04 Javascript
AngularJS对动态增加的DOM实现ng-keyup事件示例
2018/03/12 Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
2019/04/14 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
浅谈关于vue中scss公用的解决方案
2019/12/02 Javascript
小程序瀑布流组件实现翻页与图片懒加载
2020/05/19 Javascript
Python下载网络小说实例代码
2018/02/03 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
Django media static外部访问Django中的图片设置教程
2020/04/07 Python
Python实现删除某列中含有空值的行的示例代码
2020/07/20 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
HTML5 Canvas中绘制椭圆的4种方法
2015/04/24 HTML / CSS
波兰在线体育用品商店:Hop-Sport.pl
2019/07/23 全球购物
旅游管理专业生自荐信范文
2014/01/02 职场文书
见习期自我鉴定
2014/01/31 职场文书
贷款委托书范本
2014/04/08 职场文书
初中同学会活动方案
2014/08/22 职场文书
上诉答辩状范文
2015/05/22 职场文书
2016春季运动会前导词
2015/11/25 职场文书
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS