首页 > 解决方案 > 如何显示在会话结束前 10 秒发出警告的模式?

问题描述

我在 Angular 中有一个项目,由于已知令牌无效,会话在 60 分钟结束时到期。目前我有一个 JWT 拦截器,当它检测到无效令牌时,它会将我带到登录页面。我想实现一个模式窗口,在该窗口中通知用户即将终止会话。我怎么能做到?

标签: angularrxjs

解决方案


当您从服务器获取令牌时,您可以为通知模式设置计时器。JWT 有一个 exp 字段,可以在令牌过期时保存数据,因此您的解决方案将如下所示:

setExpiredTimer(): void {
    this.authService.token$
      .pipe(
        switchMap(({ exp }) => timer(Number(new Date(exp) - 10000)))
      )
      .subscribe(() => this.showNotificationModal());
  }

推荐阅读