#javascript #amazon-web-services #authentication #aws-lambda #amazon-cognito
Вопрос:
Я работаю над проектом VUE Amplify, он почти завершен, но cognito не предлагает проверку дублирования почты, поэтому мне приходится делать это вручную, так как мы знаем, что у AWS есть некоторые триггеры, которые я использую, вызывая функцию Лямбда, мой код:
var AWS = require("aws-sdk");
const cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
exports.handler = function(event, context, callback) {
var params = {
UserPoolId: "us-east-1_xxxXXXxXX",
AttributesToGet: ["email"]
};
cognitoidentityserviceprovider.listUsers(params, (err, data) => {
if (err) {
console.log(err, err.stack);
callback(err) // here is the error return
} else {
data.Users.forEach(function(usuario) {
if(usuario.Attributes[0].Value == event.request.userAttributes.email){
return {};
}
});
callback(event);
}
});
}
но я не понимаю, что я делаю неправильно, возвращается выполнение лямбды…
Object { code: "UserLambdaValidationException", name: "UserLambdaValidationException", message: "PreSignUp failed with error [object Object]." }
Есть идеи?
Ответ №1:
Вам нужно вернуть объект события
https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-sign-up.html
Комментарии:
1. Спасибо, это именно то, что я делал, я просто добавил
callback (full, event);
, и это не работает, но есть ли способ отменить событие регистрации и отправить пользовательское сообщение? Если я отправлю пустой объектcallback (full, {} );
, Cognito вернет { код: «Исключение InvalidLambdaResponseException», имя: «Исключение InvalidLambdaResponseException», сообщение: «Недопустимая версия. Версия должна быть 1» } Приложение.vue:2042. Разве вы не можете просто вернуть событие;?