Как изменить временный пароль пользователя с помощью AWS Cognito и iOS SDK?

У меня есть приложение для iOS, над которым я работаю, и я использую AWS Cognito для управления аутентификацией пользователей. Я использую готовый интерфейс входа. Однако, когда пользователь создается в консоли AWS, ему назначается временный пароль, который пользователь должен будет изменить при первом входе в систему. На это указывает состояние "FORCE_CHANGE_PASSWORD" в разделе "Пользователи и группы" Сведения о пуле пользователей в консоли AWS.

Когда созданный администратором пользователь пытается войти в систему в первый раз, возникает проблема "NEW_PASSWORD_REQUIRED". Поскольку готовый вход в рабочий процесс, по-видимому, не решает эту проблему, я узнал, как определить, когда это происходит, и открыть новый контроллер представления, который будет принимать имя пользователя, текущий пароль и новый пароль. Чтобы обнаружить проблему, я отредактировал библиотечную функцию, которая вызывается при возникновении этой проблемы, и передал уведомление через NotificationCenter. Я понимаю, что редактирование библиотечных файлов, вероятно, не лучшая практика, но это единственный способ, с помощью которого я мог бы приступить к работе, чтобы мой код знал, когда возникает проблема.

Контроллер представления пытается изменить пароль пользователя, используя user.changePassword(OLD_PASSWORD, proposedPassword: NEW_PASSWORD), Это на самом деле не меняет пароль, хотя. Внутри .continueWith{ (response) -> Any? in обратный звонок, я считаю, что response как следует: <AWSTask: 0x7fd417e6ca90; completed = YES; cancelled = NO; faulted = YES; result = (null)>,

Нигде не могу найти ответ на эту проблему. Я искал документацию AWS (найти решение, но для Android: https://docs.aws.amazon.com/cognito/latest/developerguide/using-amazon-cognito-user-identity-pools-android-sdk-authenticate-admin-created-user.html), а также здесь о переполнении стека, GitHub и в Интернете, но я не нашел никаких рабочих решений. Я понимаю, что этот вопрос: в AWS iOS SDK, как мне обращаться с FORCE_CHANGE_PASSWORD User Status, кажется, тот же вопрос, и на него дан ответ. Я не смог заставить свой код работать с этим ответом, к сожалению. Вот функция, которая вызывается, когда пользователь нажимает кнопку, чтобы изменить свой пароль с предоставленной информацией, введенной в текстовые поля:

@IBAction func submitNewPassword(_ sender:AnyObject) {
    print("Attempting to submit new password...")
    let pool: AWSCognitoIdentityUserPool = AWSCognitoIdentityUserPool(forKey: userPoolID)
    let user: AWSCognitoIdentityUser = pool.getUser(usernameInput.text!)
    user.changePassword(oldPasswordInput.text!, proposedPassword: newPasswordInput.text!).continueWith { (response) -> Any? in
        print("\n\nResponse is: \(response)\n\n")
    }
}

Я пытался понять, как взять на себя другую роль и изменить пароль таким образом, думая, что, возможно, это проблема с авторизацией, но я так и не смог понять, как это сделать. Любая помощь будет принята с благодарностью! Это определенно самая неприятная ошибка, которую я когда-либо имел!

0 ответов

Другие вопросы по тегам