Хранить пользовательские атрибуты в Cognito или AppSyn c? - PullRequest
1 голос
/ 08 апреля 2020

Я использую AWS Усиление и мне интересно, лучше ли хранить пользовательские атрибуты как пользовательские атрибуты Cognito или в пользовательской таблице для AppSyn c?

Подход Cognito:

'username': 'jdoe',
'password': 'mysecurepassword#123',
'attributes': {
    'email': 'me@domain.com',
    'phone_number': '+12135555555',
    'custom:favorite_flavor': 'Cookie Dough'  // custom attribute, not standard
}
  • Плюсы: Единственный источник правды
  • Минусы: Не является частью API

AppSyn c подход:

type User 
    @model 
    @auth(
        rules: [
          {allow: owner, ownerField: "owner", operations: [create, update, delete, read]},
        ])
{
    id: ID!
    owner: String
    favoriteFlavor: String
}
  • Плюсы: Все возможности API
  • Минусы: У каждого человека есть два " users "(пользователь Cognito и пользователь таблицы)

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

Спасибо!

1 Ответ

1 голос
/ 09 апреля 2020

Из моего опыта лучше использовать оба.

  1. Поля, связанные с аутентифицированными (электронная почта, имя пользователя, телефон, ...), сохраните их как на Cognito, так и в БД. 1 Пользовательский атрибут Cognito «custom: id» для сопоставления с «id» пользователя в БД.
  2. Другие атрибуты, сохраните их в БД для большей гибкости. Поскольку пользовательские атрибуты cognito не могут быть найдены, а ограничение API-интерфейса Cognito (количество запросов в секунду) не подходит для регулярного использования: https://docs.aws.amazon.com/cognito/latest/developerguide/limits.html, поэтому лучше сохранять и извлекать данные из БД.
  3. Когда пользователь обновляет поля, связанные с аутентификацией, вы должны выполнить обновление как в Cognito, так и в DB.

Надеюсь, это поможет вам.

...