为什么需要带过期时间的存储?
localStorage 允许我们在浏览器中存储数据,并且这些数据在页面重新加载或关闭后仍然保存。项目开发中有时需要让数据在指定时间后失效,例如用户登录后的 Token 有效期。
但 localStorage 不支持直接存储带过期时间的数据。本文通过两个简单的函数,为它实现定时存储的能力。
实现思路
保存数据时,创建一个同时包含“实际值”和“过期时间”的对象,将其转换为 JSON 字符串后存入 localStorage。
读取数据时,先判断该对象是否存在及是否过期:如果过期就删除该项并返回 null;否则返回其中保存的值。
实现代码
function setLocalStorageWithExpire(key, value, expireTime) { const now = new Date().getTime(); const expires = now + expireTime;
const item = { value, expires, };
localStorage.setItem(key, JSON.stringify(item)); }
function getLocalStorageWithExpire(key) { const itemStr = localStorage.getItem(key);
if (!itemStr) { return null; }
const item = JSON.parse(itemStr); const now = new Date().getTime();
if (now > item.expires) { localStorage.removeItem(key); return null; }
return item.value; }
|
使用示例
setLocalStorageWithExpire('userToken', 'abcdef123456', 1000 * 60 * 60);
const token = getLocalStorageWithExpire('userToken');
if (token) { console.log('该用户 Token 为:', token); } else { console.log('用户未登录或登录已过期'); }
|
总结
通过这两个简单的函数,我们可以在 localStorage 中实现带过期时间的键值存储,从而更灵活地管理应用数据。