使用 AWS Amplify 自定义 OTP 身份验证流程
Customizing OTP Authentication flow with AWS Amplify
我目前已经使用 Amplify 将 OTP 身份验证登录流程集成到 React Native 应用程序中。流程如下
(我遵循了本 article 中提供的指南)
但现在我需要提供将 OTP 代码发送到用户输入的电子邮件地址的选项,以防未收到手机号码。
最初的想法是通过发送 email
属性通过 Amplify Auth.signUp
触发 create auth challenge
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 并将其保存到 table 和
然后使用 SES 将 OTP 发送到电子邮件。
创建自定义方法来验证 OTP。
从 table 检查 OTP 并验证它。
if(SUCCESS)
use admin to mark as verified
我目前已经使用 Amplify 将 OTP 身份验证登录流程集成到 React Native 应用程序中。流程如下
(我遵循了本 article 中提供的指南)
但现在我需要提供将 OTP 代码发送到用户输入的电子邮件地址的选项,以防未收到手机号码。
最初的想法是通过发送 email
属性通过 Amplify Auth.signUp
触发 create auth challenge
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 并将其保存到 table 和 然后使用 SES 将 OTP 发送到电子邮件。
创建自定义方法来验证 OTP。
从 table 检查 OTP 并验证它。
if(SUCCESS) use admin to mark as verified