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

3

我正在开发一个聊天应用程序,使用SSE实现了实时聊天功能。我使用Keycloak作为身份验证提供程序,为了允许身份验证,我不得不使用自定义的EventSource实现,称为EventSourcePolyFill。我的前端使用Angular构建。我正在尝试像这样做,但我对JavaScript还很陌生。

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

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

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,
    },
  });
}

4
你好,谢谢你的评论。我已经找到了更好的方法,有一种直接返回字符串的方法,即kcService.getKeycloakInstance().token。 - BendabizAdam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接