javascript - 如果没有打开相同 url 的事件选项卡,则销毁 localStorage

标签 javascript cookies local-storage session-storage

我今天遇到一个问题,我试图保护用户经过身份验证的 token 。我使用 session 存储来设置 session 过期时间,并使用 javascript 无法访问的服务器端 cookie 来存储其身份验证 token 。目前的问题是,如果用户打开新选项卡,他将不会登录,因为 sessionStorage 中没有过期时间,但 token cookie 仍然存在。我正在考虑将此类过期从 sessionStorage 移至 localStorage,以便用户在打开新选项卡时仍然登录,但如果我的网站没有事件选项卡,我想删除此类 localStorage 条目。这可以检查吗?

最佳答案

您可以将到期日期设置为当前时间 + x(当 x 是很短的时间,比如说一分钟)。 然后编写一个 setInterval 调用来在选项卡处于事件状态时扩展它。像这样的东西:

var expiration = new Date();
expiration.setMinutes(expiration.getMinutes() + 1);
window.localStorage.setItem('MyTokenExpiration', JSON.stringify(expiration));

window.setInterval(function() {
    var now = new Date();
    var tokenExpiration = new Date(JSON.parse(window.localStorage.getItem('MyTokenExpiration')));
    if(tokenExpiration.getSeconds() < now.getSeconds() + 30) {
        tokenExpiration.setMinutes(now.getMinutes() + 1);
        window.localStorage.setItem('MyTokenExpiration', JSON.stringify(tokenExpiration));
    }
}, 30000);

关于javascript - 如果没有打开相同 url 的事件选项卡,则销毁 localStorage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40970175/

相关文章:

javascript - Codemirror 中的历史大小有限制吗?

javascript - 单线程如何处理JavaScript中的异步代码

c++ - 查看 C++ new[] cookie。这段代码的可移植性如何?

javascript - 如何在 express + passport js 中删除注销时的 cookie?

javascript - 如何获取引用号(链接形式)以使用javascript在另一个html页面中自动填写表格的一部分

javascript - 如何在数组中查找 bool 值?

javascript - 将对象传递给函数时检索索引

Python - 使用 Set-Cookie 来使用 cookie 不起作用

webview - 使用 React Native 渲染位于设备上的网页

javascript - 如何在 jqueryMoblie 的本地存储中存储项目