Cognito не может зарегистрировать пользователей, которые уже имеют неподтвержденный статус - PullRequest
0 голосов
/ 27 ноября 2018

Пул пользователей Cognito настроен так, чтобы пользователи использовали свой «адрес электронной почты» для регистрации и входа.

Если пользователь подписывается с электронной почтой другого человека, то это письмо застревает вНЕ ПОДТВЕРЖДЕНО, и владелец не сможет использовать его надлежащим образом.

Сказав это, позвольте мне привести пример со следующим сценарием:

  1. Пользователь входит с адресом электронной почты, которыйпользователь не владеет, скажем, это someone@mail.com.На этом этапе (форма регистрации) отправляются дополнительные данные, такие как название организации и полное имя пользователя.
  2. Код подтверждения отправляется на электронную почту
  3. Теперь пользователь, которому принадлежит кто-то @email.com хочет создать учетную запись (возможно, через несколько дней), поэтому он идет и заполняет регистрационную форму, но cognito выдает ошибку {"__type":"UsernameExistsException","message":"An account with the given email already exists."}

Думает рассмотреть: * Если электронное письмо уже существует, но находится в неподтвержденном состоянии, предоставьте пользователю возможность повторно отправить ссылку.Эта опция не оптимальна, потому что дополнительные данные могут быть уже в профиле пользователя, как пример 1-й шаг .* Можно настроить собственную лямбду, чтобы удалить неподтвержденного пользователя перед регистрацией или в качестве процесса обслуживания каждый день, но я не уверен, что это лучший подход.

Существует также эта конфигурация в разделе Policies in cognito consol: «Как скоро должны истечь учетные записи пользователей, созданные администраторами, если они не используются?», Но, как следует из его названия, этот параметр будет применяться только к пользователям, если они приглашены администраторами.

Есть ли правильное решение для этого затруднительного положения?

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

изменить, чтобы подтвердить из неподтвержденного:

aws cognito-idp admin-confirm-sign-up \
--user-pool-id %aws_user_pools_web_client_id% \
--username %email_address%
0 голосов
/ 03 мая 2019

Amazon Cognito предоставил триггеры предварительной регистрации для этих функций, а также автоматическую регистрацию. Ваша мысль аналогична той, которую я реализовал, в соответствии с документацией Cognito.

Здесь я использую ampify / cliэто инструментальная цепочка для моей цели разработки, поэтому лямбда-функция, используемая в триггере, выглядит следующим образом:

`

"use strict";
console.log("Loading function");
var AWS = require("aws-sdk"),
  uuid = require("uuid");
var cognitoIdentityServiceProvider = new AWS.CognitoIdentityServiceProvider();
exports.handler = (event, context, callback) => {
  const modifiedEvent = event;
  // check that we're acting on the right trigger
  if (event.triggerSource === "PreSignUp_SignUp") {
    var params = {
      UserPoolId: event.userPoolId,
      Username: event.userName
    };
    cognitoIdentityServiceProvider.adminGetUser(params, function(err, data) {
      if (err) {
        console.log(err, err.stack);
      } // an error occurred
      else {
        console.log("cognito service", data);
        if (data.UserStatus == "UNCONFIRMED") {
          cognitoIdentityServiceProvider.adminDeleteUser(params, function(
            err,
            data
          ) {
            if (err) console.log(err, err.stack);
            // an error occurred
            else console.log("Unconfirmed user delete successful ");
           // successful response
          });
        }
        // successful response
      }
    });
    return;
  }
  // Throw an error if invoked from the wrong trigger
  callback('Misconfigured Cognito Trigger '+ event.triggerSource);
};

`

это будет фактически проверять и удалять, еслистатус НЕ ПОДТВЕРЖДЕН при использовании методов aws-sdk adminGetUser и adminDeleteUser

надеюсь, это поможет;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...