如果从一个选项卡退出,如何从所有选项卡注销?在java中。

时间:2017-06-28 11:41:33

标签: java jquery jsp session

我开发了一个servlet jsp应用程序。我正在使用JSP,Java-Servlet和ajax。会话也使用了。如果我从一个选项卡注销,如何从其他选项卡注销并在其他选项卡中刷新页面。请帮忙。

2 个答案:

答案 0 :(得分:1)

我们可以在更改localStorage值时使用存储事件通知。

function storageChange (event) {

if(event.key === 'logged_in') {
    alert('Logged in: ' + event.newValue)
}
}
window.addEventListener('storage', storageChange, false);

例如,如果其中一个选项卡注销,则将false设置为logging_in,如下所示:

window.localStorage.setItem('logged_in', false)

然后所有其他选项卡都会收到一个StorageEvent,并会显示一条警告:

Logged in: false

这里实际上当localStorage获得更改侦听器时被调用。 然后你可以编写自己的代码来注销会话。并重新加载到登录页面。

答案 1 :(得分:-1)

为了实现这一点,首先我们不应该使用cookie来存储任何敏感数据,例如身份验证令牌。即使是会话cookie也不够,因为它会在关闭标签后继续生效,甚至在完全关闭浏览器之后也是如此。

这使我们将令牌保存在内存或sessionStorage中。 sessionStorage的好处是它可以在不同页面和浏览器刷新时保持不变。因此,用户可以导航到不同的页面和/或刷新页面并仍然保持登录状态。

有一种机制可以利用浏览器sessionStorage或memoryStorage的安全特性进行身份验证,并且仍然允许用户打开多个选项卡而无需每次都重新登录。

关于相关浏览器存储机制的复习

localStorage ~5MB,保存为无限或直到用户手动删除它。 sessionStorage ~5MB,保存当前标签的生命周期 cookie ~4KB,可以保存到无穷大 会话cookie ~4KB,在用户关闭浏览器时删除(并不总是删除)

在选项卡之间共享memoryStorage以实现安全的多标签身份验证

所以......这将是在浏览器会话中保留身份验证令牌的唯一真正安全的方法,并允许用户打开多个标签而无需重新登录

关闭标签,会话消失了 - 这次真实。