首页 > 解决方案 > 从 keycloak 获取访问令牌

问题描述

我是 keycloak 和 Angular 的新手。在我的 Angular 7 应用程序中,我angular-oauth2-oidc用来连接到 keycloak。这按预期工作。

我想获取访问令牌并将其存储在本地存储中。有人可以帮我得到它吗?

登录功能

login() {
    this.oauthService.initLoginFlow();
  }

authConfig: AuthConfig = {
    issuer: "http://localhost:8080/auth/realms/rpa",               
    redirectUri: window.location.origin + "/dashboard/process",    
    clientId: "spa-rpa",
    scope: "openid profile email offline_access rpa",
    responseType: "code",
    disableAtHashCheck: true,
    showDebugInformation: true
  };

在此处输入图像描述

标签: angularaccess-tokenkeycloak

解决方案


我自己想出了解决方案。我必须使用如下的事件监听器。

this.oauthService.events
      .pipe(filter((e: any) => e.type === 'token_received'))

      .subscribe(() => {
        this.handleNewToken()
      },
      error => {
        console.log("Error : "+error);
      },
      () => {
        console.log('HTTP request completed.')
      }); 

private handleNewToken() {
    localStorage.setItem('Access_key', this.oauthService.getAccessToken());
    this.router.navigate(['/dashboard/process']);
    localStorage.removeItem("spinner_loading");
  }

推荐阅读