【问题标题】:How to detect password change in Post Confirmation Lambda Trigger?如何检测 Post Confirmation Lambda Trigger 中的密码更改?
【发布时间】:2020-03-19 00:32:44
【问题描述】:

当用户注册以进入数据库时​​,我正在触发 Lambda。确认后 Lambda 触发器触发正常,没有问题。现在,在实施密码更改表单后,我看到触发了相同的 Lambda。

事实上,AWS 声明它应该 - 它是“发布确认”,因此当用户确认他的电子邮件重新输入发送的代码时,它会触发。我没问题。

如何在 Lambda 中识别触发触发器的原因是什么?当只是更改密码时,我不想进行相同的数据库调用。

(我检查了进来的请求 - 那里没有任何有用的问题)

【问题讨论】:

  • 我在这里遇到同样的问题..用户提交后忘记密码..POST_CONFIRMATION 触发器被调用。btw @wiktus239 你解决了这个问题吗?
  • lambda 正在 DynamoDB 中创建用户记录,并在更改密码时覆盖了现有记录。我最终在dynamodb.put 参数中添加了一个条件,有效地防止了这种情况:ConditionExpression: 'attribute_not_exists(PK)'(其中 PK 是主键,值为用户电子邮件)。
  • 所以它解决了我的问题,但这并不完全是我问题的答案

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


【解决方案1】:

要区分 PostConfirmation 上的来源,您必须在事件对象中使用 "triggerSource": "string" 属性。

PostConfirmation 的触发源可以是PostConfirmation_ConfirmForgotPasswordPostConfirmation_ConfirmSignUp

事件对象的格式为:

{
    "version": "string",
    "triggerSource": "string",
    "region": AWSRegion,
    "userPoolId": "string",
    "userName": "string",
    "callerContext": 
        {
            "awsSdkVersion": "string",
            "clientId": "string"
        },
    "request":
        {
            "userAttributes": {
                "string": "string",
                ....
            }
        },
    "response": {}
}

参考:https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools-working-with-aws-lambda-triggers.html#cognito-user-identity-pools-working-with-aws-lambda-trigger-sources

【讨论】:

    猜你喜欢
    • 2019-08-13
    • 2021-04-29
    • 1970-01-01
    • 2021-06-15
    • 2019-01-12
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    相关资源
    最近更新 更多