amazon-web-services - Serverless 创建的 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/
推荐阅读
- excel - 如何仅使用 VBA 在一张纸上将多个范围导出为 PDF
- javascript - 如果用户两次选择相同的项目,ReactJS 语义 UI 下拉菜单不会触发
- firebase - 如果使用默认服务帐户,如何在 Firebase 中覆盖 Google Cloud 项目?(去管理员 SDK)
- android - 反应本机获取抛出异常网络请求在android上失败
- laravel - 简单的 Laravel Passeport 路由测试
- syntax - 为什么使用 ODE 系统在八度音阶中给出语法错误
- dialogflow-es - 使用 Google 转录短音频的问题(是,否)
- c# - 从 excel 文件中替换无效的 XML 字符并将其写回磁盘会导致文件在 MS Excel 中打开时出现损坏错误
- c# - 如何在 mongo DB 中保存对先前版本对象的引用
- machine-learning - 如何决定有多少卷积和反卷积应用于 GAN?