【问题标题】:AWS Cognito created by Serverless doesn't send confirmation emailsServerless 创建的 AWS Cognito 不发送确认电子邮件
【发布时间】:2021-04-07 04:09:40
【问题描述】:

我正在处理无服务器身份验证,但在发送确认电子邮件时遇到了问题。 当我通过 AWS 控制台创建用户时,会创建用户并发送带有确认码的电子邮件。 但是当我向 API 发出请求时,在 Cognito 中创建了用户,但没有发送电子邮件。 我的代码或请求可能有什么问题?

这是在 serverless.yml 中定义的 Cognito 资源:

CognitoUserPool:
    Type: AWS::Cognito::UserPool
    Properties:
      UserPoolName: ${self:service}-${self:provider.stage}-user-pool
      UsernameAttributes:
        - email
      AutoVerifiedAttributes:
        - email
      EmailConfiguration:
        EmailSendingAccount: COGNITO_DEFAULT

这是我发送给 API 的请求:

POST / HTTP/1.1
Host: cognito-idp.eu-central-1.amazonaws.com
X-Amz-Target: AWSCognitoIdentityProviderService.SignUp
X-Amz-User-Agent: aws-amplify/0.1.x js amplify-authenticator
Content-Type: application/x-amz-json-1.1
Content-Length: ###

{
    "ClientId": "####################",
    "Username": "######@###.##",
    "Password": "####################",
    "ValidationData": null
}

【问题讨论】:

    标签: amazon-web-services amazon-cognito serverless-framework aws-serverless


    【解决方案1】:

    我通过使用自动确认用户创建preSignUp lambda 触发器解决了这个问题:

    const handler: PreSignUpTriggerHandler = async (event: PreSignUpTriggerEvent, context, callback) => {
      event.response.autoConfirmUser = true;
    
      callback(null, event);
    };
    

    文档

    AWS:https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-sign-up.html 无服务器:https://www.serverless.com/framework/docs/providers/aws/events/cognito-user-pool/

    【讨论】:

      【解决方案2】:

      我使用不同的框架 (Amplify),但由于两个框架都使用 Cognito 用户池,我猜问题是您缺少“域名”。

      在 AWS 控制台中,检查您的用户池,然后在(左侧面板)中找到“应用程序集成”,然后打开并设置“域名”。

      再次,我只是猜测(抱歉,如果我的建议没有帮助),但我遇到了类似的问题。

      【讨论】:

      • 谢谢你,Stefan,你的回答,但它没有帮助。但是,我设法解决了这个问题。
      猜你喜欢
      • 2016-11-15
      • 2020-03-12
      • 1970-01-01
      • 2012-11-19
      • 2022-01-23
      • 2013-05-18
      • 1970-01-01
      • 2018-06-16
      • 2014-09-25
      相关资源
      最近更新 更多