如何在 angular-keycloak 中获取 keycloak 令牌

问题描述 投票:0回答:1

我正在构建一个聊天应用程序,我使用 sse 实现了实时聊天功能,我使用 keycloak 作为 idap,为了允许身份验证,我必须使用名为 EventSourcePolyFill 的自定义 EventSource 实现,我的前端是用 Angular 构建的, 我正在尝试做这样的事情,但我是 js 新手,

    private getEventSource(url: string): EventSourcePolyfill {
    return new EventSourcePolyfill(url, {
      headers: {
        Authorization: 'Bearer ' + this.kcService.getToken,
      },
    });
  }

当我在开发工具中看到承载者时发现它是:承载者[object Promise]

angular keycloak server-sent-events
1个回答
0
投票

看到

[object Promise]
表示令牌正在异步返回。在这种情况下,您需要
await this.kcService.getToken

允许的最简单方法是使

getEventSource()
异步。这意味着您需要等待对该函数的调用。依此类推,向上调用堆栈。

另一种方法是确保您已提前获取了 keycloak 令牌,并将其作为参数传入:

private getEventSource(url: string, token: string): EventSourcePolyfill {
return new EventSourcePolyfill(url, {
  headers: {
    Authorization: 'Bearer ' + token,
    },
  });
}
© www.soinside.com 2019 - 2024. All rights reserved.