Компоненты AWS Cognito с усиленной аутентификацией и угловым интерфейсом - PullRequest
0 голосов
/ 05 апреля 2019

Здравствуйте. Я пытаюсь использовать встроенные компоненты Angular для аутентификации. Я создал Cognito и API с помощью Amplify. Пул пользователей Cognito не может быть изменен. Вот скриншот, где вы также можете увидеть настройки: enter image description here

Я инициализировал компонент следующим образом:

  <ion-content padding>  
      <amplify-authenticator [signUpConfig]="signUpConfig" framework="ionic"></amplify-authenticator>
  </ion-content>

Мой класс содержит это для signUpConfig:

  constructor(
    public events: Events,
    public amplifyService: AmplifyService,
    public router: Router
  ) {
    this.authState = { signedIn: false };
    this.signUpConfig = {
      header: "SignUp",
      defaultCountryCode: '30',
      hideAllDefaults: true,
      signUpFields: [
        {
          label: 'Mobile-Username',
          key: 'username',
          required: true,
          displayOrder: 1,
          type: 'string'
        },
        {
          label: 'Mobile',
          key: 'phone_number',
          required: true,
          displayOrder: 2,
          type: 'string'
        },
        {
          label: 'Password',
          key: 'password',
          required: true,
          displayOrder: 3,
          type: 'password'
        },
        {
          label: 'Email',
          key: 'email',
          required: true,
          displayOrder: 4,
          type: 'email'
        },
        {
          label: 'Name',
          key: 'name',
          required: true,
          displayOrder: 5,
          type: 'string'
        },
        {
          label: 'Surname',
          key: 'family_name',
          required: true,
          displayOrder: 6,
          type: 'string'
        },
        {
          label: 'Address',
          key: 'address',
          required: true,
          displayOrder: 7
        },
        {
          label: 'Gender',
          key: 'gender',
          required: true,
          displayOrder: 8
        }
      ]

    };
  }

К сожалению, я должен включить

        {
          label: 'Mobile-Username',
          key: 'username',
          required: true,
          displayOrder: 1,
          type: 'string'
        },

для заполнения имени пользователя номером мобильного телефона, поскольку Cognito UserPool ожидает username и mobile number, хотя из настроек ясно, что мне нужно только мобильное имя пользователя.

Если я оставляю первую запись из моего signUpFields, я всегда получаю сообщение об ошибке от сервера, что username cannot be empty.

Что я должен делать, особенно сейчас, когда я не могу вносить изменения в свой пул пользователей. Я полагаю, что это связано с тем, что я использовал Amplify CLI для его настройки.

1 Ответ

0 голосов
/ 07 апреля 2019

Вы пробовали передать username в параметрах attributes?Или попробуйте preferred_username вместо username в параметре атрибутов.

Auth.signUp({
    username,
    password,
    attributes: {
      'username': username // HERE or try 'preferred_username': username
    },
    validationData: []  //optional
    }).then().catch()

На основе документации

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

Ссылка: https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-aliases

enter image description here

...