当前位置: 首页 > 知识库问答 >
问题:

如何在浏览器上注销用户已关闭。ie清除本地存储中存储的JWT令牌(非页面刷新)

艾鹭洋
2023-03-14

我将JWT令牌与msal一起用于用户身份验证。用户登录后,我们将JWT令牌存储在localStorage中,并在注销时清除localStorage和msal loguut。

但我想强制注销浏览器上的用户已关闭。因此,在浏览器关闭后,我必须清除本地存储。

我试着在卸载之前使用OnForeUnload

我尝试了以下代码

componentDidMount() {
   window.addEventListener("beforeunload",this.forceLogout,false)
}

componentWillUnmount() {
    window.removeEventListener("beforeunload",this.forceLogout,false)
}

forceLogout(){
  localStorage.clear();
}

注意:msal登录重定向回应用程序后,由于使用HashRouter,我们刷新页面

共有1个答案

逄嘉木
2023-03-14

如果在MSAL中使用会话缓存存储选项。js则当浏览器关闭时,将清除令牌。

https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/383c2e3089f139daaaaf7b81a80bc8c47b6c1273/lib/msal-core/README.md#cache-储藏

但是,如果您的应用程序打开了多个窗口/选项卡,请小心,因为在关闭所有实例之前,浏览器可能会处于清除状态。

 类似资料:
  • 我第一次使用JSON Web令牌(JWT)。我正在制作一个节点。js应用程序。我想使用JWT进行身份验证。根据文档,我将JSON令牌返回到前端。 但是我不知道如何将这个JSON令牌保存到我的浏览器头中,这样它就不会丢失,并随头一起再次发送到后端。如何将它保存在我的浏览器存储中,并在每次向后端发送请求时将其添加到请求头中?

  • 我们有一个带有Angular 2的Spring启动应用程序,对于身份验证,我们使用JWT。我遇到了一个问题——即使令牌已经过期,然后注销并再次登录,过期的JWT令牌仍然在请求标头上可用。因此后端仍然验证旧的JWT令牌,而不是新令牌。我需要清除浏览器缓存使其工作。 我看到令牌存储在Sessionstore中,下面的操作也是为了在上清除令牌 但这也不是清除旧令牌。我可以做些什么来从浏览器中清除令牌?

  • 我正在尝试使用 GraphQL 使用 JWT 对用户进行身份验证。登录用户后,我会收到令牌作为 JSON 响应和存储刷新令牌的 httponly cookie。(服务器端使用的是销售核心) 从Saleor的文档和其他一些博客帖子中,我假设这个响应cookie现在应该存储在浏览器中,每当我需要刷新令牌时,cookie refreshToken将用于验证我的请求。然而,当我在开发工具中将选项卡切换到“

  • 我正在用Django和angular构建一个应用程序。目前,我正在本地存储上存储后端发布的JWT。但是,我担心XSS攻击。我应该使用仅HTTP cookie存储令牌吗?我还考虑将令牌存储在auth服务类的变量字段中。但我不能完全确定angular是否在整个应用程序中共享该服务。我的身份验证服务是否只有一个实例?

  • 我已在登录时在本地存储中设置了身份验证令牌,并在注销时将其清除。注销后,如果用户尝试再次登录,则从缓存中获取旧的身份验证令牌,而不是新设置的值。如何在清除本地存储时清除缓存。我在应用程序中使用angular 2。 登录: 注销:

  • 情景: 浏览器(用户)向服务提供商(SP)请求资源 SP(使用SAML请求)重定向到身份提供程序(IdP) 由于是第一次登录,用户将向(IdP)提供其有效凭据 然后,IdP将浏览器(带有包含SAML令牌的SAML响应)重定向到SP页面 我有两个问题: A、 在步骤4中,浏览器是否存储或缓存SAML响应和/或SAML令牌? B.如果是,什么样的事情(属性?超时?协议?)阻止我获取存储的SAML令牌。