amazon-web-services - AWS Cognito - 用户确认注册后如何在 dynamodb 中创建用户记录

标签 amazon-web-services amazon-cognito

一旦 Cognito 用户确认注册,我将尝试在 ddb 中为他们创建用户记录。我希望使用用户的(联合)身份 ID 作为主键。

但是,身份 ID 在 postConfirmation lambda 触发器中不可用。事实上,只有在用户使用其访问 token 进行身份验证后,身份 ID 才可用。我想这是有道理的,因为认知用户池是一个提供商,就像 Facebook 和谷歌一样。在他们通过该提供商登录之前,您不会创建身份。

与 facebook 和 google 不同,登录 cognito 用户池时没有需要调用 oauth 回调来创建记录。用户只需像这样登录:

cognitoUser.authenticateUser(authenticationDetails, {
    onSuccess: function (result) {
        console.log('access token + ' + result.getAccessToken().getJwtToken());
        AWS.config.credentials = new AWS.CognitoIdentityCredentials({
            IdentityPoolId: self.IdentityPoolId,
            Logins: {
              [`cognito-idp.${self.region}.amazonaws.com/${self.poolData.UserPoolId}`]: result.getIdToken().getJwtToken()
            }
        });
        console.log("AuthService: set the AWS credentials - " + JSON.stringify(AWS.config.credentials));
        self.currentUser = cognitoUser;
        cb(null, result);
    },

    onFailure: function(err) {
        console.log(err);
      cb(err, null);
    }

});

只有这样,身份 ID 才会被创建。那么实现创建用户记录的标准方法是什么?用户首次登录时创建记录是否标准?

最佳答案

我认为有几种方法可以做到这一点。一种可能是使用子值作为键而不是身份 ID。它在创建时提供给用户,并且是全局唯一的(如身份 ID)。如果您选择这条路线,那么您对使用 postConfirmation 回调的想法就很棒。

如果您确实想要身份ID(如果您有其他AWS资源可以访问并且想要访问它们,那么您可能会这样做),那么我可能建议您在onSuccess block 中构建您自己的 Hook 。检查该身份 ID 的行是否存在,如果存在则不执行任何操作。如果没有,请创建它。这对您的用例有意义吗?还是有更多皱纹?

关于amazon-web-services - AWS Cognito - 用户确认注册后如何在 dynamodb 中创建用户记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43285479/

相关文章:

c# - AWS Unity 3D SDK(Cognito Sync 403 禁止错误)

java - AWS Cognito GetCredentialsForIdentity

oauth-2.0 - AWS Cognito 的 token 自省(introspection)路径是什么

amazon-web-services - 身份验证 AWS Cognito SRP

node.js - Visual Studio Code 调试器不会在 SAM Local 中的断点处停止

php - 错误 404,即使路由存在 - AWS,Laravel

ios - 通过 AWS SNS 移动推送最小延迟一次性广播 500K 推送通知的最佳策略是什么?

amazon-web-services - s3 SignedUrl x-amz-security-token

php - Amazon S3 上传错误 PermanentRedirectException

android - Android上的AWS Cognito SDK,参数cognitoDevice Null导致登录崩溃