#reactjs #amazon-cognito #aws-amplify
#reactjs #amazon-cognito #aws-усилить
Вопрос:
Я использую React и библиотеку AWS Amplify для регистрации и выполнения аутентификации для своего проекта. Теперь я хочу создать форму, которая появляется только один раз (для пользователя, чтобы добавить дополнительные данные в базу данных, например, адрес), и она должна появляться, когда пользователь регистрируется и входит в систему в первый раз, и после этого никогда больше. Я не смог понять, как это сделать, особенно установив условие, что оно появляется только при первом входе в систему. Любая помощь была бы высоко оценена. Спасибо!
Комментарии:
1. Добавьте в форму необходимые входные данные для страницы регистрации ? Я могу сделать только предположения, поскольку ваш вопрос слишком широк таким образом. Пожалуйста, поделитесь своим кодом, чтобы люди поняли, что именно происходит. О, кстати, добро пожаловать.
2. ну, форма выглядит следующим образом'<форма> <метка> Имя: <тип ввода = «текст» название =»улица» /> </label> <тип ввода=»отправить» значение =»Отправить» /> </form>’ и я хочу, чтобы она появлялась один раз после первого входа. Надеюсь, теперь вы понимаете. Спасибо!
3. Я знаю, что могу добавить ее на страницу регистрации, но я проверял, были ли это другие способы. Например, как при создании учетной записи Google
Ответ №1:
Вам придется использовать пару путей.
Я предполагаю, что информация, которую вы хотите, чтобы пользователь сохранил, будет либо атрибутом пользователя в вашем пуле пользователей Cognito, либо в отдельной базе данных. Я предполагаю, что вы будете использовать UserAttributes для ответа.
Показывать только один раз (я предполагаю, что вы имеете в виду при входе в систему, и пользователь может получить к этому доступ другим способом):
- Когда пользователю впервые предоставляется форма, обновите его профиль атрибутом с именем seenForm (или любым другим).
-
Проверьте, есть ли у пользователя этот атрибут при входе в систему
showForm = async() => { await Auth.updateUserAttributes({ // this sets the seenform attribute in the user's profile to make sure that they are not shown it again seenForm: true }) ... } checkUserAttributes = async () => { await Auth.userAttributes() .then(async (userAttributes) => { // check to see if the attribute field exists !userAttributes['seenForm'] ? this.showForm() : null } } async componentDidMount() { checkUserAttributes() }
Если атрибут существует, пропустите показ формы. В противном случае задайте атрибут и покажите форму.
Это работает лучше, чем использование локального хранилища в случае, если пользователь входит в систему с другого устройства.