在 JavaScript 中更改密码后从多个浏览器注销

问题描述 投票:0回答:2

我有一个网站,用户可以在多个浏览器中登录,例如;火狐和 Chrome。我想实现一个功能,当用户在 Firefox 中更改密码时,然后在 Chrome 中,它也应该注销。我如何用 JavaScript 实现?

我们可以用本地 storgae 或 session 来实现这个吗?

javascript reactjs authentication jwt token
2个回答
0
投票

本地和会话存储不在不同浏览器之间共享,因此您需要的不仅仅是存储。

您可以通过多种方法来实现此功能,这取决于您的应用程序的设置方式。

最简单的方法是在密码更改时通知客户端,例如通过 Web 套接字连接。如果更改了密码,您可以取消设置客户端上的所有 JWT 令牌。

您还可以在服务器上保留对令牌的引用,并验证令牌是否仍然有效(例如,在 JWT 的有效负载中使用唯一的 ID)。如果情况并非如此,您将向客户端返回错误,并根据该错误取消设置 JWT 令牌。

在这种情况下,纯粹的“客户端”JavaScript 解决方案是不可能的。


0
投票

我几天前实现了这个(使用 Angular 客户端和 PHP 服务器)。

由于我无法使用服务器发送的消息来使 localStorage 无效,因此我采用了带有短期访问令牌的刷新令牌。刷新令牌用于每 N 分钟获取一个新的访问令牌,它保存在服务器数据库中,并在用户更改密码时删除。 这样所有的会话都会在N分钟后自动关闭。

您可以使用轮询实现更简单的解决方案:服务器必须提供“ping”API来检查令牌;客户端调用此 API 并管理“KO”响应。

© www.soinside.com 2019 - 2024. All rights reserved.