我在一个角度应用程序中有多个项目。 我还需要使用一个keycloak应用程序对所有项目进行身份验证。 我对第一个应用程序具有密钥斗篷身份验证,但是现在我需要对所有其他应用程序进行身份验证,但是通过这种方式
ROOT APP
|
|--projects
| |---app1
| | |-guard (here is keycloak initializer, guard service and everything for app1)
| | |-app1.module
| | |-app1.routing
| | |-app1.component
| |
| |---app2
| | |-app2.module
| | |-app2.routing
| | |-app2.component
| |
| |---app3
| | |-app3.module
| | |-app3.routing
| | |-app3.component
| |
| |---app4
| | |-app4.module
| | |-app4.routing
| | |-app4.component
|
|
|
rootApp.module
rootApp.routing
rootApp.component
现在,我需要在同一领域使用APP1 and APP2
,如果您已经登录app1
,则可以直接进入app2
,而无需重新登录,并且同样从app2
到app1
。
APP3
具有唯一的领域,而APP4
也具有唯一的领域。
在app2
中,我尝试添加与app1
中相同的keycloak配置,因为它们具有相同的领域,但是在这种情况下我无法运行ng serve,因此无法正常工作。
这是我的app-init.ts
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);
}
});
};
}