Amazon web services Cognito/Lambda:预签名中的验证

Amazon web services Cognito/Lambda:预签名中的验证,amazon-web-services,aws-lambda,amazon-cognito,aws-amplify,Amazon Web Services,Aws Lambda,Amazon Cognito,Aws Amplify,我正在用Cognito在Amplify上构建一个非常小的应用程序。在注册表单中,我有一个额外的属性叫做“激活密钥”,它类似于beta令牌。我想验证这个密钥,如果它是错误的,我需要返回一个错误 查看文档时,对于名为“预注册Lambda触发器”的操作,我看到了“接受或拒绝注册请求的自定义验证”的描述。听起来很完美。但在撰写本文时,该触发器的实际文档并未包括任何此类验证的示例 我发现,当我从lambda回调(新错误(“自定义消息”)返回时,它几乎完成了我需要的任务。它返回一条消息“预签名失败,错误为$

我正在用Cognito在Amplify上构建一个非常小的应用程序。在注册表单中,我有一个额外的属性叫做“激活密钥”,它类似于beta令牌。我想验证这个密钥,如果它是错误的,我需要返回一个错误

查看文档时,对于名为“预注册Lambda触发器”的操作,我看到了“接受或拒绝注册请求的自定义验证”的描述。听起来很完美。但在撰写本文时,该触发器的实际文档并未包括任何此类验证的示例

我发现,当我从lambda回调(新错误(“自定义消息”)返回时,它几乎完成了我需要的任务。它返回一条消息“预签名失败,错误为${myCustomErrorMessage}”。这让我觉得也许有更好的方法,我只是做错了什么

从Lambda Cognito PreSignUp\u SignUp hook返回验证错误的正确方法是什么?

可能的解决办法:

  • 停止使用放大UI元素(ReactJS),只需以自定义方式执行,截取错误,并在显示错误之前删除字符串“PreSignUp failed with error”

  • 让任何人注册,但作为下一步,在Cognito流程之外要求激活密钥


使用
PreSignUp
Lambda触发器,这个用例听起来不太合理,我想说的是,在Cognito流之外处理激活密钥是一个更好的选择

实现此用例的另一种方法(推荐的方法)是使用
CUSTOM\u AUTH
身份验证流。
CUSTOM_AUTH
流中的
DefineAuthChallenge
Lambda触发器中,您可以设置Cognito身份验证流期间需要的参数(密码、OTP、CAPTCHA等)。为了更好地理解
CUSTOM\u AUTH
流程,我建议您仔细阅读一下

我认为
CUSTOM\u AUTH
只用于登录,不用于注册。能有同样的东西来报名真的很好。。。同时,我猜您要么处理无法自定义错误类型的问题,要么在创建帐户之前使用API GW+Lambda包装Cognoto调用,以进行自定义检查。