Keycloak 如何解决angular7项目中的KeyClope刷新/状态-I';我用钥匙斗篷

Keycloak 如何解决angular7项目中的KeyClope刷新/状态-I';我用钥匙斗篷,keycloak,angular7,Keycloak,Angular7,我还尝试了web源和有效重定向URI的所有不同组合 我通过KeyClope登录,它不断地在我的本地主机应用程序和此url之间来回重定向我: 我已经在firefox和chrome上试用过了,但也遇到了同样的问题——它似乎在网络选项卡中寻找keydove.json文件,尽管我可以通过keydove登录到正确的领域 获取404(未找到) scheduleTask@zone.js:2969 错误密钥斗篷初始化期间发生错误。core.js:1601 未处理的承诺拒绝:在KeyClope初始化期间发生错误;

我还尝试了web源和有效重定向URI的所有不同组合

我通过KeyClope登录,它不断地在我的本地主机应用程序和此url之间来回重定向我:

我已经在firefox和chrome上试用过了,但也遇到了同样的问题——它似乎在网络选项卡中寻找keydove.json文件,尽管我可以通过keydove登录到正确的领域

获取404(未找到) scheduleTask@zone.js:2969

错误密钥斗篷初始化期间发生错误。core.js:1601

未处理的承诺拒绝:在KeyClope初始化期间发生错误;区域:;任务:承诺;值:KeyClope初始化期间发生错误。未定义

static init(): Promise<any> {
    const keycloakAuth: any = Keycloak({
        url: 'http://localhost:8080/auth',
        realm: 'ContractPortal',
        clientId: 'secretkey2',
        'ssl-required': 'external',
        'public-client': true
    });

    KeycloakService.auth.loggedIn = false;

    return new Promise((resolve, reject) => {
        keycloakAuth.init({onLoad: 'login-required'})
            .success(() => {
                console.log(keycloakAuth);
                KeycloakService.auth.loggedIn = true;
                KeycloakService.auth.authz = keycloakAuth;
                KeycloakService.auth.logoutUrl = keycloakAuth.authServerUrl
                    + '/realms/angular_keycloak/protocol/openid-connect/logout?redirect_uri='
                    + document.baseURI;
                resolve();
            })
            .error(() => {
                reject();
            });
    });
}
static init():承诺但不确定如何实现此解决方案!这是我的提供商设置-
提供者:[
{
提供:应用程序初始化器,
useFactory:初始值设定项,
多:是的,
副秘书:[钥匙服务]
}
],

但是OP在他的提供者中添加了以下内容
提供者:[
钥匙服务,
资产服务,
{
提供:定位策略,
useClass:PathLocationStrategy
}
]


如果您需要为遇到相同问题的任何人提供任何其他信息,请告诉我-我误解了keydepot.json文件,不知道从何处获取它-因此我从keydepot导出了完整的json文件,但这不是您应该获得它的方式

首先,你必须进入你的领域>客户端并点击安装

  • 然后下载keydape OIDC json文件

  • 然后将其放在应用程序中index.html文件的旁边


这解决了我的问题-希望它能帮助其他人

我在互联网上进行研究,情况也是如此,对我来说,我的角度页面会在Infine循环中自动重新加载

我在keydape-init.ts文件中做了一些更改(请查找以下代码并将checkLoginIframe从true更改为false) 旧代码:keydape.init({onLoad:'login required',“checkLoginIframe”:true}) 新代码:keydape.init({onLoad:'login required',“checkLoginIframe”:false})