1

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

2 回答 2

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/

于 2021-04-06T20:09:40.980 回答
0

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

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

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

于 2021-04-03T23:14:36.517 回答