【问题标题】:clear token when browser is closed in angular 2当浏览器以角度 2 关闭时清除令牌
【发布时间】:2020-09-18 00:34:27
【问题描述】:

在 Angular 2 应用程序中,我们将令牌存储在本地存储中,现在当用户在登录期间未选中 记住我 选项时,我想在 浏览器关闭 时清除令牌。我是通过卸载浏览器事件做到的,但是当用户从窗口中的任务管理器关闭浏览器时,该事件的问题不会触发。

【问题讨论】:

  • 我已经实现了 'window:beforeunload' 但是当我们从任务管理器关闭浏览器时,这个事件不会触发,

标签: javascript angular


【解决方案1】:

以下应该完成这个...

import { Component, HostListener } from "@angular/core";

@Component({
    selector: 'app-root',
    templateUrl:"./app/app.component.html"
})

export class AppComponent {
    @HostListener("window:onbeforeunload",["$event"])
    clearLocalStorage(event){
        localStorage.clear();
    }
}

注意: onBeforeUnload 正在浏览器关闭事件中执行

【讨论】:

  • 您应该直接粘贴代码而不是图像。
  • 但刷新页面时它正在工作。我不需要。刷新页面时。你能帮帮我吗?
【解决方案2】:

您可以使用window.beforeunload 事件清除本地存储。

@HostListener('window:beforeunload', ['$event'])
beforeunloadHandler(event) {
  localStorage.removeItem(key);
}

或者,您可以存储您的信息in session storage,这实际上与本地存储相同,只是在关闭选项卡时数据会被清除。

【讨论】:

  • 刷新页面时它正在工作。我不需要。刷新页面时。你能帮帮我吗?
【解决方案3】:

以下代码仅在关闭时删除令牌,而不是在页面刷新时删除

 @HostListener('window:unload', ['$event'])
  async unloadHandler(event) {
    if (event.currentTarget.performance.navigation.type !== PerformanceNavigation.TYPE_RELOAD) {
      localStorage.clear();
    }
  }

【讨论】:

    猜你喜欢
    • 2018-08-07
    • 2016-07-16
    • 2010-12-19
    • 2022-08-24
    • 2016-12-09
    • 1970-01-01
    • 2012-10-26
    • 2014-05-31
    • 2022-01-06
    相关资源
    最近更新 更多