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



我正在使用带有 msal 的 JWT 令牌进行用户身份验证。用户登录后,我们将 JWT 令牌存储在 localStorage 中,注销时,我们将清除 localStorage 以及 msal loguut。

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

我尝试为此使用 onbeforeunload 和 onunload 方法,但此方法也会在页面刷新时调用。- 尝试使用会话存储,但这会导致用户登录其选项卡特定范围的每个选项卡

我尝试了以下代码

componentDidMount() {
   window.addEventListener("beforeunload",this.forceLogout,false)
}
componentWillUnmount() {
    window.removeEventListener("beforeunload",this.forceLogout,false)
}
forceLogout(){
  localStorage.clear();
}

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

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

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

但是,如果您打开了应用程序的多个窗口/选项卡,请注意,因为浏览器可能会清除,直到所有实例都关闭。

最新更新