如果没有打开相同URL的活动选项卡,则销毁localStorage

时间:2016-12-05 08:42:37

标签: javascript cookies local-storage session-storage

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

1 个答案:

答案 0 :(得分:1)

您可以将到期日期设置为当前时间+ 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);