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