有没有办法以这种方式初始化密钥斗篷。 我有一个Core应用程序,里面有两个应用程序:App1和App2。
在app1
中,我已经安装了用于身份验证的密钥斗篷,并且可以正常工作。现在,我还要向app2
中添加密钥斗篷。我需要这样做是因为app1
与app2
是分别构建的,并且如果您登录app1
并在同一浏览器app2
中打开,则您已经登录,或者您首先登录app2
,然后打开app1
,您立即登录...
我为具有相同领域名称的app1
和app2
制作了一些配置文件。
{
"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),什么都没有发生。如果我从一个应用程序中删除,则从运行正常的提供程序应用程序中删除。