首页 > 解决方案 > 如何在会话存储中设置令牌一小时?

问题描述

我在这里token存储了这个令牌sessionStorage(见下面的代码)。现在我想在 60 分钟后自动在 sessionStorage 中设置这个令牌 60 分钟我想使这个令牌过期,这怎么可能?

let value = 'eyJpc3MiOiJodHRwczovL2FwaS5kYXRhdmlwZXIuaW8vYXBpL2xvZ2l
             uIiwiaWF0IjoxNTY1Njc4NjczLCJleHAiOjE1NjU2OD';

sessionStorage.setItem('token', value);

标签: javascriptsession-storage

解决方案


按照设计,会话存储预计不会跨会话持续存在。

sessionStorage 类似于 localStorage;唯一的区别是虽然存储在 localStorage 中的数据没有过期时间,但存储在 sessionStorage 中的数据会在页面会话结束时被清除。只要浏览器打开并在页面重新加载和恢复后仍然存在,页面会话就会持续。

如果您仍然希望会话存储中的任何存储值在会话到期之前到期,则需要将到期时间保存在值中并通过您自己的函数检查是否到期。

这是一个简化的示例:

sessionStorage.setItem('key', JSON.stringify({exp: new Date() + 5, data: data}));   //A value meant to expire in 5 minutes


function checkExpired() {

    var exp = sessionStorage.getITem('exp');

    if (exp > new Date())
       console.log('expired');
}

这个例子同样很好地演示了该方法。如果要根据存储的值做出关键决策,则必须采取安全预防措施。


推荐阅读