是否可以使用cognito注册用户并一步创建dymado db用户配置文件?

时间:2018-04-18 10:08:56

标签: amazon-web-services amazon-dynamodb amazon-cognito aws-cognito

我正在努力解决下一个问题。 用户使用Web应用程序通过Cognito注册。在注册期间,他必须指出一些数据(如网站,名称等)。成功注册后,应在DynamoDB中自动创建用户配置文件,并将“sub”属性用作id。普通的数据库访问是通过API Gateway + Lambda完成的。 令人惊讶的是,Cognito没有“post sign-up”lambda触发器,这种触发器看起来最自然。 “预注册”触发器是危险的,因为注册可能会失败,“发布确认”触发器为时已晚,因为用户数据已经丢失。 一步可能的方法是将所有数据作为属性存储在Cognito中,如果用户配置文件不存在,则在任何登录时将它们复制到db。但它是任何登录的额外不受欢迎的数据库调用。这种方法并不灵活,因为如果有一天我们想要更改数据属性计数或格式,我们就无法对已经创建的用户池做任何事情。 两步方法是在注册时仅使用登录密码对,并且当用户第一次使用应用程序进入时询问所有数据(例如“请在开始使用应用程序之前填写个人资料详细信息”) 看起来不错,但我想采取一步措施。有可能吗?

2 个答案:

答案 0 :(得分:1)

您可以使用任何Cognito属性(自定义或内置,例如profile)临时存储注册信息 ,直到用户确认(PostConfirmation_ConfirmSignUp被触发) ,profile将被写入DynamoDB并从Cognito中清除。

答案 1 :(得分:0)

在我的网络应用程序中,我不依赖Cognito向DynamoDB添加任何内容。

我这样做:

  • 用户使用Cognito注册,确认电子邮件等
  • 用户使用Cognito登录并重定向到我的webapp目标网页
  • 我的网络应用程序登录页面从DynamoDB加载用户的配置文件(使用Cognito返回的Cognito子网站)。如果未找到任何配置文件,或者用户详细信息已更改,我会将详细信息从id_token添加/更新到DynamoDB。

你这样做的方式听起来不错,但是想提一下这种替代方法。

您可以在此处找到我的目标网页代码 https://stackoverflow.com/a/47796072/4985580