在oidc-client-js中回调后没有响应状态

时间:2018-03-11 12:48:01

标签: angular oidc oidc-client-js

我认为这是与角度5.2.8相关的错误。 6。 角度5.2.7工作正常。 我创建一个ng5 branch并更新角度到最新的5.2.8和错误com! 任何人都可以指导我使用oidc-client-js进行角度5.2.8和更高版本的样本?

3 个答案:

答案 0 :(得分:6)

它是由window.location.hash中的状态URI编码引起的。 对我来说,这解决了这个问题:

if (window.location.hash) {
window.location.hash = decodeURIComponent(window.location.hash);
// authorizedCallback returns wrong result when hash is URI encoded
this.oidcSecurityService.authorizedCallback();
} else {
this.oidcSecurityService.authorize();
}

答案 1 :(得分:0)

如果您正在像我这样自定义项目,而您的问题与哈希位置无关,请忽略它:

  completeAuthentication(): Promise<void> {
    return this.manager.signinRedirectCallback().then(user => {
      this.user = user;
    }).catch((err) => {});
  }

答案 2 :(得分:0)

就我而言,删除回调页面上的response_mode: 'query'实际上解决了该问题

这是我的回调页面:

<script src="https://cdnjs.cloudflare.com/ajax/libs/oidc-client/1.10.1/oidc-client.min.js"></script>
<script>
    var config = {
        userStore: new Oidc.WebStorageStateStore({ store: window.localStorage }),
        // response_mode: 'query' <-- remove this 
    }

    var mgr = new Oidc.UserManager(config)
    mgr.signinRedirectCallback()
        .then(_ => {
            window.history.replaceState({}, window.document.title, window.localStorage.origin);
            window.location.href = "/"
        }, error => {
            console.log(error)
        })
</script>