【问题标题】:Configure Amplify to use existing Cognito token配置 Amplify 以使用现有的 Cognito 令牌
【发布时间】:2021-08-02 14:23:22
【问题描述】:

我正在开发一个使用 Amplify (JS) 存储将文件上传到 S3 存储桶的应用程序。 它已经配置好并且工作正常,但我需要使用策略来保护它,并且只允许一组能够上传文件的用户(组)。 我正在使用后端服务从 Coginito 获取令牌,并将其传递给前端,现在我唯一需要弄清楚的是,如何将该令牌传递给 Amplify。 我确实尝试了federatedSignIn,但它需要一个域,而且我真的不需要传递任何东西,除了令牌。

【问题讨论】:

    标签: reactjs aws-amplify amplifyjs


    【解决方案1】:

    Auth 上有一个(现在是私有的) 函数似乎可以处理这种情况,_handleAuthResponse

    将成功登录后获得的返回 url 传递给函数。

    因为它是一个私有函数,它需要这个解决方法来访问 _handleAuthResponse:

    urlWithToken = 'https://localhost:4200/login#access_token=[ACCESS_TOKEN]&id_token=[ID_TOKEN]&state=[STATE]&token_type=Bearer&expires_in=3600'
    
    (Auth as any)._handleAuthResponse(urlWithToken)
    

    我不确定有多少参数是必需的,因为这些是我们从联合登录返回的登录重定向中包含的参数。

    在我们的应用程序中,我们使用 Hub 侦听器来获取用户详细信息:

    Hub.listen('auth', ({ payload: { event, data } }) => {
        console.log('HUB:', event);
        console.log('HUBData:', data);
        if (event == 'signIn' && data != undefined) {
          //data is a user object
        }
      });
    

    这是用于将其拼凑在一起的参考: https://github.com/aws-amplify/amplify-js/issues/4955

    【讨论】:

    • 如果我使用的是 JS 而不是 TS,我该如何转换它。
    猜你喜欢
    • 2021-12-17
    • 2021-01-01
    • 2019-09-01
    • 2021-10-25
    • 2021-06-08
    • 1970-01-01
    • 2020-02-11
    • 2022-07-29
    • 1970-01-01
    相关资源
    最近更新 更多