如何解决无服务器创建的 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 举报,一经查实,本站将立刻删除。