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

时间:2019-04-04 05:06:07

标签: javascript reactjs jwt msal.js

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

但是我想强制关闭浏览器上的用户。为此,我必须在关闭浏览器后清除localStorage。

我尝试为此目的使用onbeforeunload和onunload方法,但此方法也会在页面刷新时调用。 -尝试使用sessionStorage,但这会导致用户登录其标签特定范围的每个标签cos。

我尝试了以下代码

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

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

forceLogout(){
  localStorage.clear();
}

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

1 个答案:

答案 0 :(得分:1)

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

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

但是请小心,如果您打开了多个窗口/选项卡,因为浏览器可能会在关闭所有实例之前清除,