微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无服务器创建的 AWS Cognito 不发送确认电子邮件

如何解决无服务器创建的 AWS Cognito 不发送确认电子邮件

正在进行无服务器身份验证,但在发送确认电子邮件时遇到问题。 当我通过 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
}

解决方法

我通过使用自动确认用户创建 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/

,

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

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

同样,我只是猜测(对不起,如果我的建议没有帮助),但我遇到了类似的问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。