如何解决使用 AWS Amplify 自定义 OTP 身份验证流程
我目前已使用 Amplify 将 OTP 身份验证登录流程集成到 React Native 应用程序。流程如下。
(我遵循了此 article 中提供的指南)
但现在我需要提供将 OTP 代码发送到用户输入的电子邮件地址的选项,以防万一手机号码未收到该代码。
最初的想法是通过发送 create auth challenge
属性,通过放大 Auth.signUp
来触发 email
lambda 函数。
import Auth from '@aws-amplify/auth';
const sendVerificationToEmail = async (phone: number,email: string,password: string) => {
await Auth.signUp({
username: phone,password,attributes: {
email
} });
}
然后可以按如下方式重新修改 lambda 函数以发送电子邮件或短信,
...
const email = event.request.userAttributes.email;
if (email) {
// Logic to send OTP verification code via SES
} else {
// Logic to send OTP via SNS
}
但是这是不可能的,因为我们已经在 cognito 用户池中创建了一个用户。此属性不会传递给 lambda 函数。
实现这一目标的正确方法是什么?
解决方法
最简单的方法是,为自定义流设置 lambda 函数。
-
创建自定义方法以生成 OTP 并将其保存到表中 然后使用 SES 将 OTP 发送到电子邮件。
-
创建自定义方法来验证 OTP。
-
从表中检查 OTP 并进行验证。
if(SUCCESS)
use admin to mark as verified
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。