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.');
    }
相关推荐
山河木马6 小时前
渲染管线-计算得到gl_Position(顶点着色器)之后续GPU流程
javascript·webgl·图形学
竹林8186 小时前
用 The Graph 查询链上数据实战:从手搓 RPC 到 Subgraph,我的 NFT 项目数据加载快了 10 倍
前端·javascript
kyriewen9 小时前
别再每次都 Google 了:我整理了前端日常最常踩的 10 个 Git 坑,附速查表
前端·javascript·git
SmartBoyW10 小时前
深入ECMAScript规范:彻底搞懂JS隐式类型转换与底层ToPrimitive机制
前端·javascript
咪库咪库咪10 小时前
vue3-组件
vue.js
用户8524950718410 小时前
解密 JavaScript 中的 this:谁才是真正的调用者?
javascript·面试
10share10 小时前
100行代码 模拟实现Vue 响应式系统
前端·vue.js
Heo10 小时前
Vite进阶用法详解
前端·javascript·面试
铁皮饭盒12 小时前
Next.js 风格路由内置?Bun FileSystemRouter 凭啥这么香
javascript
小林ixn13 小时前
别再背八股了!从 5 个真实场景彻底搞懂 JavaScript 的 this
javascript