首页 > 解决方案 > 如何暂停http请求,直到在localstorage中收到并记录令牌?

问题描述

我在角度应用程序中进行授权。我通过 OAuth 获取 CODE 并将其发送到后端。后端给我一个令牌。但是当我等待令牌的接收和记录时,几个 BASE(例如菜单计数器)请求返回 401 错误。将令牌写入内存后,如何保存所有请求并发送它们?

角 7.2.0

public intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    const currentToken = localStorage.getItem('accessToken');
    if (currentToken) {
      request = request.clone({
        setHeaders: {
          Authorization: `Bearer ${currentToken}`
        }
      })
    }
    return next.handle((request));
  }

我想在收到令牌后才请求数据,现在我必须刷新页面重新请求所有数据

标签: angularoauthjwtinterceptor

解决方案


所有的 http 请求本质上都是异步的。所以你必须在后端调用 Token 的 subscribe 方法中调用 Menu。所有后续调用也可以在其中进行。


推荐阅读