AWS Cognito UI 在调用回调页面时使用哈希来包含参数

Posted

技术标签:

【中文标题】AWS Cognito UI 在调用回调页面时使用哈希来包含参数【英文标题】:AWS Cognito UI uses a hash to include parameters when it calls the callback page 【发布时间】:2019-01-23 12:55:44 【问题描述】:

我在使用 AWS Cognito 提供的 UI 时遇到问题。

当我尝试使用提供的 UI 时,我使用填充的 URL 调用端点:

https://mydomain.auth.ap-northeast-1.amazoncognito.com/login?response_type=token&client_id=123456789&redirect_uri=http://localhost:3000/callback/

现在的问题是,在身份验证之后,Cognito 使用 # 来发回所需的参数。结果如下所示:

http://localhost:3000/callback/#id_token=eyJragIsm2PqVpw&access_token=eyJraWQiOiJ&expires_in=3600&token_type=Bearer

我很难在回调页面(这是一个 vue 应用程序)中读取 id_token 和 access_token。

如何配置 Cognito 以使用通常的问号 (?) 来传递查询字符串,或者,如何读取哈希 (#) 后传递的参数。

感谢您对此提出的建议。

【问题讨论】:

这个问题解决了吗?对我来说同样的问题。 我也有同样的问题。 @FakeFootball 我更改了我的代码以搜索? # 然后处理每个案例。只是一种解决方法。 【参考方案1】:

如果您使用的是 Vue.js 路由器,实际上处理哈希部分非常容易。只需将此 sn-p 放在组件中的某个位置即可。 参考:https://router.vuejs.org/api/#the-route-object

let cognitoData = 
if (this.$route.hash !== "") 
    let elementsString = decodeURIComponent(
        this.$route.hash.substr(1, this.$route.hash.length)
    );
    let params = elementsString.split("&");
    for (let param of params) 
        let values = param.split("=");
        cognitoData[values[0]] = values[1];
    


// do your business with cognitoData

【讨论】:

这不是解决方案。只是一个 Vue.js 拼凑。

以上是关于AWS Cognito UI 在调用回调页面时使用哈希来包含参数的主要内容,如果未能解决你的问题,请参考以下文章

运行 npm install 时多次调用回调

如何在 AWS Cognito ui 中使用 nuxt auth 模块

vue js中的aws cognito UI表单字段问题

AWS ALB使用cognito认证时遇到redirect_mismatch错误

如何利用 AWS Cognito 托管 UI 进行授权代码授予流程

AWS Cognito 用户名/电子邮件登录名区分大小写