oidc-client-js 回调后无响应状态
Posted
技术标签:
【中文标题】oidc-client-js 回调后无响应状态【英文标题】:No state in response after callback in oidc-client-js 【发布时间】:2018-08-19 13:59:33 【问题描述】:我认为这是与 angular 5.2.8 & 6 相关的错误。 使用 Angular 5.2.7 可以正常工作。 我创建了一个ng5 branch 并将角度更新到最新的 5.2.8 和错误 com! 任何人都可以使用 oidc-client-js 将我引导到 Angular 5.2.8 及更高版本的示例?
【问题讨论】:
可能显示一些代码或提供更多上下文 @David 查看github.com/client-sdk-samples/sample-angular-OidcClient/tree/… 我想知道这些是否相似 - github.com/damienbod/angular-auth-oidc-client/issues/195 你设法解决这个问题了吗?遇到同样的问题。 @21seconds 我的回答对我来说很好,如果它也适合你,请将其标记为接受。 【参考方案1】:它是由 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();
【讨论】:
谢谢,window.location.hash = decodeURIComponent(window.location.hash);
这是我需要的线路。【参考方案2】:
如果您像我一样在做一些自定义的事情,而您的问题与哈希位置无关,请忽略它:
completeAuthentication(): Promise<void>
return this.manager.signinRedirectCallback().then(user =>
this.user = user;
).catch((err) => );
【讨论】:
为此+1,这正是我最初所做的,这证实了这一点。我将 React 与 React-Router 一起使用,由于某种原因,oidc-client 没有读取状态。以上是关于oidc-client-js 回调后无响应状态的主要内容,如果未能解决你的问题,请参考以下文章
OidcClient.readSigninResponseState:在存储中找不到匹配的状态 - oidc-client-js (Angular)
startActivityForResult调用后立即响应了OnActivityResult()方法,导致setResult()后无响应