localstorage时间限制,localstorage api不支持过期时间
除非手动清除localStorage,否则它将始终存储在浏览器中。然而,在许多情况下,我们可能需要本地存储有一个到期时间。比如我们把用户认证令牌保存在客户端,一周内有效,一周后再登录。那么这个要求如何实现呢?
要知道,localStorage本身并不提供过期机制。那样的话,就只能自己实施了。我们可以直接将这样的方法添加到它的原型中。
storage . prototype . set expire=(key,value,expire)={ };Storage.setExpire(key,value,expire);如果逾期,就要记录时间。我们的思路是在设置值的时候记录当前时间,然后在获取值的时候确定当前时间和之前时间的时间差是否在一定范围内。如果超出范围,它将清除当前项并返回null。
要将时间添加到值中,必须定义一种格式。
storage . prototype . set expire=(key,value,expire)={ let obj={ data:value,time:Date.now(),expire:expire };localStorage.setItem(key,JSON . stringify(obj));}包括以下三个字段
数据的实际值,time,当前时间戳,expire time,因为localStorage设置的值不能是对象,这里使用JSON.stringify方法将其转换成字符串,使用时最终还是要转回。
然后我们添加一个获取方法。
storage . prototype . get expire=key={ let val=local storage . getitem(key);如果(!val){ return val;} val=JSON . parse(val);if(date . now()-val . time val . expire){ local storage . remove item(key);返回null}返回val.data}我们可以先测试一下
localStorage.setExpire(token ,
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。