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 线性渐变和径向渐变示例附图
Apr 08 HTML / CSS
关于css兼容性问题及一些常见问题汇总
May 03 HTML / CSS
CSS3制作酷炫的三维相册效果
Jul 01 HTML / CSS
html5 sessionStorage会话存储_动力节点Java学院整理
Jul 06 HTML / CSS
HTML5调用手机摄像头拍照的实现思路及代码
Jun 15 HTML / CSS
深入解析HTML5使用SVG图像时的viewBox属性用法
Sep 02 HTML / CSS
HTML5新特性 多线程(Worker SharedWorker)
Apr 24 HTML / CSS
Html5页面获取微信公众号的openid的方法
May 12 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
May 19 HTML / CSS
一个基于canvas的移动端图片编辑器的实现
Oct 28 HTML / CSS
position:sticky 粘性定位的几种巧妙应用详解
Apr 24 HTML / CSS
纯CSS如何禁止用户复制网页的内容
Nov 01 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中数据的批量导入(csv文件)
2006/10/09 PHP
十天学会php之第七天
2006/10/09 PHP
PHP 翻页 实例代码
2009/08/07 PHP
php FLEA中二叉树数组的遍历输出
2012/09/26 PHP
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
PHP JSON格式的中文显示问题解决方法
2015/04/09 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
2016/06/30 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
基于JQuery的简单实现折叠菜单代码
2010/09/15 Javascript
jquery插件 autoComboBox 下拉框
2010/12/22 Javascript
Bootstrap每天必学之进度条
2015/11/30 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
2016/08/02 Javascript
微信小程序 页面跳转传参详解
2016/10/28 Javascript
JS和JQuery实现雪花飘落效果
2017/11/30 jQuery
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
js实现控制文件拖拽并获取拖拽内容功能
2018/02/17 Javascript
简单明了区分escape、encodeURI和encodeURIComponent
2018/05/26 Javascript
python保存数据到本地文件的方法
2018/06/23 Python
Python操作mongodb数据库的方法详解
2018/12/08 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
2020/02/29 Python
Python绘图之二维图与三维图详解
2020/08/04 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
介绍一下linux的文件系统
2015/10/06 面试题
运动会入场解说词300字
2014/01/25 职场文书
酒店中秋节促销方案
2014/01/30 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
计算机专业自荐信
2014/05/24 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
2014最新毕业证代领委托书
2014/09/26 职场文书
五年级小学生评语
2014/12/26 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
python百行代码实现汉服圈图片爬取
2021/11/23 Python
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android