【以下的问题经过翻译处理】 我正在实现无需密码的短信认证。流程为:登录 -> 错误(用户未找到)-> 注册 -> 登录 -> OTP 发送到手机 -> 用户输入 OTP -> 确认登录 -> 成功登录。这个流程可以工作,用户可以成功登录。但是 phone_number 的验证最好发生在 PostAuthentication 中(在用户输入并成功检查 OTP 后登录后),而不是在 PreSignUp 中。
我有以下 lambda:PreSignUp、DefineAuthChallenge、CreateAuthChallenge、VerifyAuthChallengeResponse、PostAuthentication。一切都很顺利。想要做一件好事:在 Post Authentication 中自动验证电话号码,而不是在 PreSignUp lambda 中。怎么做?我想在 PostAuthentication lambda 中使用以下内容可以实现它:
event.response.phone_number_verified = "true"
但没有成功。我还尝试设置:
event.request.userAttributes.phone_number_verified = "true"
也没有成功。在 PreSignUp 中,以下内容运行得很好:
event.response.autoVerifyPhone = true;
PostAuthentication lambda (custom.js):
exports.handler = async (event, context) => {
console.log('Received EVENT', JSON.stringify(event, null, 2)); if (event.request.userAttributes.hasOwnProperty("email") && event.request.userAttributes.email_verified != "true") {
event.request.userAttributes.email_verified = "true"
event.response.email_verified = "true";
}
if (event.request.userAttributes.hasOwnProperty("phone_number") && event.request.userAttributes.phone_number_verified != "true") {
event.request.userAttributes.phone_number_verified = "true";
event.response.phone_number_verified = "true";
}
console.log('Returning event', JSON.stringify(event, null, 2))
return event;
};
PreSignUp (custom.js):
"use strict";
exports.handler = async (event) => {
console.log('Received EVENT', JSON.stringify(event, null, 2));
event.response.autoConfirmUser = true;
/*
if (event.request