首页 > 解决方案 > SigninRedirectCallback 期间的 OIDC 客户端编码 URL

问题描述

我正在使用外部身份服务器构建应用程序。登录工作正常,只有当被发送回 signin-oidc 页面时才会发生奇怪的事情。

我正在使用 HashLocationStrategy 所以 URL 看起来像这样。

http://localhost:4200/#/signin-oidc#id_token=....

但是在加载此页面几秒钟后,似乎 URL 在第一个 # 之后被编码,这使得它看起来像这样:

http://localhost:4200/#%2Fsignin-oidc%23id_token=....

这会导致我的应用重定向到 404 页面。

登录重定向回调函数如下所示:

this.manager.signinRedirectCallback().then((user: User) => {
    if (user) {
        this.user = user;
        this.router.navigate(['/']);
    }
});

它没有达到路由器导航功能,所以这不是问题。有人可以帮我解决这个问题吗?

标签: angularoidc-client-jsoidc-client

解决方案


您可以尝试反序列化 URL 参数 OnInit

例如:

decodeURIComponent(string)

检索解码的 URL 后调用您的 signinRedirectCallback()


推荐阅读