vue -关于浏览器localstorge数据定期清除的实现

1.实现背景

用户登录时的信息存在了localstorge中,但它会一直存在。一般来说,我们希望这个数据能够定期被清除掉,以下一个定时清除的实现。

2.实现原理

在用户登录时,将用户信息存入localstorge的同时,将当前时间作为时间戳也保存在localstorge中,然后需要验证的位置设置一个定时器,定时扫描时间戳状态:获取当前时间戳,然后减去之前存的时间戳,如果两者差值超过一定范围(过期时间/),则清除localstorge缓存即可。

3.代码实现

1.登录时候,存用户信息,当前时间:

js 复制代码
 localStorage.setItem("userInfo", JSON.stringify(res.data))
 localStorage.setItem('timestamp', Date.now());

2.页面加载时,创建定时器,执行定时扫描,页面销毁前,清除定时器。

js 复制代码
data(){
	return{
	checkLocalStorageInterval : null
	}
},
created() {
    // 在组件创建完成后启动定时器
    this.startCheckLocalStorage();
  },
 beforeDestroy() {
    // 在组件销毁前清除定时器
    if (this.checkLocalStorageInterval) {
      clearInterval(this.checkLocalStorageInterval);
    }
  },

3.定时器主要实现:

js 复制代码
	startCheckLocalStorage() {
      this.checkLocalStorageInterval = setInterval(() => {
        this.checkLocalStorageStatus();
      }, 1000); //1s执行一次
    },
    checkLocalStorageStatus() {
      const storedTimestamp =localStorage.getItem('timestamp'); //拿之前存的时间戳
      // 如果没有时间戳或已超过1天,则清空数据
      if (!storedTimestamp || Date.now() - storedTimestamp > 24 * 60 * 60 * 1000) {
        this.clearLocalStorage();
      }
    },
    clearLocalStorage() {
       localStorage.removeItem('adminInfo'); //删除localstorge的数据
       //todo 另外要执行的事情
       //this.$router.push('adminLogin') 
       //console.log('localStorage has been cleared.');
    }
相关推荐
Highcharts.js9 分钟前
缺失数据可视化图表开发实战|Highcharts创建人员出生统计面积图表示例
开发语言·前端·javascript·信息可视化·highcharts·图表开发
放下华子我只抽RuiKe59 小时前
React 从入门到生产(四):自定义 Hook
前端·javascript·人工智能·深度学习·react.js·自然语言处理·前端框架
XinZong10 小时前
OpenClaw 实现双重心跳(Heartbeat)+ clawreach虾聊项目实现
javascript
还有多久拿退休金12 小时前
一张栈的图,治好你面试答不出 script 阻塞的病
前端·javascript
zithern_juejin12 小时前
原型与原型链
javascript
还有多久拿退休金13 小时前
我用 Three.js 造了个 3D 漫步世界,角色走路像喝醉了——以及我是怎么修好的
前端·vue.js
LJA6484414 小时前
为什么 AI 时代更需要配置化组件库
vue.js
008爬虫实战录14 小时前
【码上爬】 题十二:如来神掌 困难, JSVMP加密,使用代理补环境
前端·javascript·node.js
threelab15 小时前
Three.js 数学函数着色器 | 三维可视化 / AI 提示词
javascript·人工智能·着色器
ZC跨境爬虫16 小时前
跟着 MDN 学CSS day_3:(为一个传记页面添加样式)
前端·javascript·css·ui·音视频·html5