Angular和Keycloak-具有多个项目时初始化应用程序

时间:2019-12-02 12:29:38

标签: angular keycloak

有没有办法以这种方式初始化密钥斗篷。 我有一个Core应用程序,里面有两个应用程序:App1和App2。

app1中,我已经安装了用于身份验证的密钥斗篷,并且可以正常工作。现在,我还要向app2中添加密钥斗篷。我需要这样做是因为app1app2是分别构建的,并且如果您登录app1并在同一浏览器app2中打开,则您已经登录,或者您首先登录app2,然后打开app1,您立即登录...

我为具有相同领域名称的app1app2制作了一些配置文件。

{
  "keycloak": {
    "realm": "app",
    "url": "https://localhost/auth",
    "clientId": "admin"
  }
}

这是app-init组件

import { KeycloakService } from "keycloak-angular";
import { environment } from "../../environments/environment";

export function initializer(keycloak: KeycloakService): () => Promise<any> {
  return (): Promise<any> => {
    return new Promise(async (resolve, reject) => {
      const { keycloakConfig } = environment;

      try {
        await keycloak.init({
          config: keycloakConfig,
          initOptions: {
            onLoad: "login-required",
            checkLoginIframe: false
          },
          bearerExcludedUrls: []
        });
        resolve();
      } catch (error) {
        reject(error);
      }
    });
  };
}

然后在每个应用程序的app.module中将其添加到providers

 providers: [
    {
      provide: APP_INITIALIZER,
      useFactory: initializer,
      multi: true,
      deps: [KeycloakService]
    }
  ],

现在,如果我使用“ ng serve”这个应用程序中的任何一个来运行,则在控制台中都不会出现任何错误,只在浏览器中循环(反复尝试打开URL),什么都没有发生。如果我从一个应用程序中删除,则从运行正常的提供程序应用程序中删除。

0 个答案:

没有答案
相关问题