我目前正在使用 AWS Cognito 为基于节点的应用程序实施电子邮件验证。我们使用外部电子邮件发送器服务来发送验证电子邮件,并且我已经使用 Cognito Lambda 挂钩进行了配置。
目前,在发送此电子邮件时,我们会生成一个链接:
https://my-frontend.com/verify-email?code=000000&[email protected]
然后,前端将必要的数据发送到我们的 Node 后端,后者应该能够使用 Cognito 验证代码,然后在必要时使用如下所示的内容:
CognitoIdentityProvider.AdminUpdateUserAttributes({
UserAttributes: [{
Name: 'email_verified',
Value: 'true'
}],
UserPoolId: 'COGNITO_USER_POOL_ID_HERE',
Username: 'USERNAME'
});`
但是,我正在努力寻找一种方法来获取验证码来检查自己,或者将代码发送给Cognito作为“管理员”进行检查 - 我能找到的唯一功能是
CognitoIdentityProvider.GetUserAttributeVerificationCode
,需要有效的用户访问令牌。
所以,我的问题是:是否可以有一个自定义电子邮件发送器(最好是在我们的前端有一个验证电子邮件页面),同时仍然使用 Cognito 生成的验证码,或者我们是否必须生成并存储我们自己的验证码后端?或者,有没有办法让 Cognito 生成链接并将其发送到我们的自定义电子邮件服务?如果我们可以将其配置为随后重定向回我们的前端,那么这样的选项会很棒。不过,我还没有找到该选项 - 使用“消息自定义”选项似乎不会影响非 SES 电子邮件发件人。
提前致谢:)
在实施一段时间后更新这个问题 - 我们最终只是自己生成验证码。我找不到任何提及使用 Cognito 完成我所要求的操作的方法,因此我们只是在我们这边处理验证并告诉它用户在完成后已得到验证。