Reactjs - Могу ли я использовать функцию Auth.authenticatedUser из AWS Усилить на всех страницах моего сайта? - PullRequest
0 голосов
/ 16 марта 2020

Мой вопрос носит концептуальный характер, поэтому я не буду писать здесь никакого кода.

Я создаю свой веб-сайт с Reactjs, и весь процесс аутентификации работает правильно. Чтобы сделать это проще, я собираюсь рассмотреть 03 страницы на веб-сайте: - Страница 1: страница входа пользователя с использованием метода Auth.signIn. Когда пользователь проходит проверку подлинности, он автоматически переходит на страницу 2.

  • Страница 2: На этой странице требуется много информации от пользователя. Для этого есть API, где входным параметром является имя пользователя. Чтобы получить параметр имени пользователя, метод Auth.authenticatedUser вызывается при визуализации страницы. После этого вызывается API для получения информации о пользователе из базы данных. Предположим, что на странице 2 есть только кнопка, которая дает доступ к странице 3.

  • Страница 3: на этой странице есть дополнительная информация о пользователе, которую необходимо прочитать с база данных. API, который получает эту информацию, снова имеет входной параметр, представляющий собой «имя пользователя». Чтобы получить параметр username, у меня есть 2 варианта: Option 1: снова использовать Auth.authenticatedUser и получить имя пользователя. Option 2: передать «username» со страницы 2 на страницу 3 в качестве реквизита.

В моем случае, использовать вариант 1 намного проще, потому что на моем веб-сайте много страниц, и переносить реквизиты с одной страницы на другую - трудная задача - в итоге я закончу необходимость использовать redux.

Мой вопрос: - Есть ли проблемы с использованием Auth.authenticatedUser на всех страницах для получения информации об имени пользователя? В этом есть какое-то неудобство (т. Е. Скорость рендеринга страницы и т. Д. c ...)

1 Ответ

1 голос
/ 16 марта 2020

Из источника похоже, что Amplify кэширует пользователя как в памяти , так и в localStorage , поэтому извлечение имени пользователя должно быть достаточно эффективным.

Просто дважды проверьте на вкладке сети вашего браузера, что Amplify не делает никаких сетевых запросов каждый раз, когда вы звоните Auth.currentAuthenticatedUser.

Судя по всему, Amplify, похоже, был разработан с учетом вашего варианта использования, поскольку он может использоваться почти как «глобальное хранилище» информации аутентификации пользователя. Вместо того, чтобы быть оберткой вокруг API, Amplify делает для вас некоторое кэширование и логи c. Так что, вероятно, лучше просто вызывать его напрямую, а не хранить данные пользователя в Redux или передавать их по страницам. Хранение данных пользователя в Redux или передача их по страницам просто создаст дублирующую логику c.

...