Какова рекомендуемая архитектура при использовании AWS Cognito Registration в мобильном приложении? - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь использовать AWS Cognito для аутентификации в моем мобильном приложении.

В настоящее время серверная часть моего приложения хранит все пользовательские данные в таблице User в MySQL и имеет связи с другими таблицами (например, с таблицей Orders и т. Д.). Когда я пользуюсь Cognito Registration, должен ли я сначала зарегистрировать пользователя с помощью cognito, а затем снова передать эти данные своему бэкэнду, чтобы он мог хранить данные в моей таблице User?

Как бы мы справились со случаем, когда регистрация cognito проходит корректно, но не получается, когда я передаю детали в бэкэнд моего приложения (скажем, потому что мой сервер не работает)?

Какая здесь рекомендуемая архитектура?

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Когда я пользуюсь Cognito Registration, должен ли я сначала зарегистрировать пользователя с помощью cognito, а затем снова передать эти данные своему бэкэнду, чтобы он мог хранить данные в моей таблице User?

AWS Congnito предоставляет опции для вызова лямбда-функций для определенных событий Cognito, см. https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools-working-with-aws-lambda-triggers.html

В триггере UserPool вы можете определить лямбду «Предварительная регистрация», которая будет вызываться, когда пользователь отправляет свою информацию для регистрации

Как бы мы справились со случаем, когда регистрация cognito проходит корректно, но не получается, когда я передаю детали в бэкэнд моего приложения (скажем, из-за того, что мой сервер не работает)?

Согласно документации:

Amazon Cognito invokes Lambda functions synchronously. When called, your Lambda function must respond within 5 seconds. If it does not, Amazon Cognito retries the call. After 3 unsuccessful attempts, the function times out. This 5-second timeout value cannot be changed

Есть несколько вариантов:

  • Если вам нужно быть отказоустойчивым, вы можете использовать SQS для обеспечения надежной доставки. В этом случае вам нужно будет прочитать и обработать очередь

  • вы можете реализовать собственную обработку ошибок (например, сохранить, повторить, отправить письмо и т. Д.)

0 голосов
/ 03 сентября 2018

Когда я пользуюсь Cognito Registration, я должен сначала зарегистрироваться у пользователя с помощью Cognito, а затем снова передать эти детали на мой бэкэнд, чтобы он можно хранить детали в моей таблице пользователей?

Да, будет полезно также сохранить данные пользователя в пользовательской таблице. Это будет использоваться при запросе базы данных для функций приложения.

Как бы мы справились со случаем, когда регистрация в Cognito проходит правильно но это не удается, когда я передаю детали в бэкэнд моего приложения (скажем, потому что мой сервер не работал)?

Сделайте это отказоустойчивым способом, используя Лямбда-триггеры из Cognito до регистрации пользователя (предварительная регистрация), функция Lambda будет включать код для обновления базы данных, и в случае успеха Cognito продолжит работу. с регистрацией.

...