Сохраняйте данные в DynamoDB с идентификатором пользователя Cognito - PullRequest
0 голосов
/ 23 мая 2018

Я установил приложение для iOS с помощью AWS Mobile Hub.Я использую сервисы AWS Cognito и AWS DynamoDB.

Я создал в AWS DynamoDB личную таблицу, в которой по умолчанию используется ключ раздела userId.Насколько я могу судить, AWS DynamoDB только позволяет userId быть identityId, например, AWSIdentityManager.

Я могу успешно установить пользовательский сеанс через AWSCognitoIdentityUserPool.default().currentUser()?.getSession().

Я читаю / пишу в AWS DynamoDB с identityId, который я получаю через AWSIdentityManager.default().identityId, как userId.

Однако identityId всегда остается неизменным на устройстве, даже если я установил сеанс пользователя.

Как получить identityId из AWSIdentityManager, который предназначен для пользователя AWS Cognito?

1 Ответ

0 голосов
/ 23 мая 2018

EDIT:

IdentityId являются уникальными для каждого пользователя Cognito, как мы обнаружили вместе в ветке комментариев, но они кэшируются на устройстве и должны быть очищены при выходе из системы.Очистить через swift sdk с:

AWSCognitoIdentityProvider.Clear()

Ниже приведен мой оригинальный ответ, в котором рекомендуется использовать имя пользователя или псевдоним, который также уникален для каждого пользователя cognito, но его следует использовать только в качестве ссылки для обсуждения комментариев.Вместо этого используйте IdentityId в качестве первичных ключей dyanmodb.

END-EDIT:

Я бы порекомендовал использовать имя пользователя в качестве ключа раздела в вашей таблице DynamodB.

Вы можете получить имя пользователя из объекта AWSCognitoIdentityUser по

if let username = AWSCognitoIdentityUserPool.default().currentUser()?.username {
   // do stuff with username
}

Вы также можете настроить пул пользователей на использование псевдонима пользовательского имени, чтобы пользователи могли входить через электронную почту и / или номер телефона.,В этом случае адрес электронной почты и / или номер телефона также будут уникальными, а затем, если вы предпочитаете, вы можете использовать любой из них в качестве уникального ключа раздела в своей таблице dynamicodb.Вот обзор псевдонимов в cognito.

...