Скрытие маршрутов в заголовке React на основе Express.js Статус входа пользователя - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть приложение, которое использует express.js в качестве языка на стороне сервера и React на внешнем интерфейсе. Я использую passport.js для аутентификации маршрутов на сервере, используя локальные стратегии входа в систему и facebook (без JWT). Я использую express-session для управления сеансом, который кажется прямым (или недостаточным, которого я пока не знаю, для моего случая, как его работа в процессе).

Мое требование - скрыть / показать несколько ссылок в компоненте Header. то есть.,

  • Войти
  • Регистрация

должен отображаться на странице указателя, когда пользователь еще не вошел в систему, но скрыт, когда он вошел в систему. Аналогично, несколько ссылок должны быть скрыты, когда пользователь еще не вошел в систему.

Какой самый лучший ват, чтобы проверить это у клиента? Выполнение AJAX-вызова не является идеальным, так как у меня может быть больше случаев использования проверки правильности пользовательского сеанса от клиента.

Я вижу файл cookie по умолчанию connect.sid , который создает Express, но как его использовать, или есть ли лучший способ для клиента узнать, что пользователь уже вошел в систему дюймы

1 Ответ

0 голосов
/ 09 ноября 2018

У вас есть пара вариантов. Вот некоторые из них:

  1. Вы можете проверить наличие другого файла cookie в браузере и использовать его в качестве метрики для определения того, вошли ли вы в систему или нет. Ваш браузер не будет знать, истек ли сеанс на стороне сервера, поэтому вам все равно придется учитывать тот факт, что вы можете выйти из системы и не знать об этом. Кроме того, необходимо обязательно очистить этот файл cookie при выходе из системы и установить его при входе в систему.

  2. При запуске ваш браузер может сделать запрос AJAX, чтобы получить зарегистрированного пользователя. Это может быть полезно для всех видов вещей, таких как отображение имени пользователя при входе в систему. Вам действительно нужно сделать это только один раз (при загрузке страницы и при входе в систему), а затем отслеживать состояние входа пользователя в систему, хранящееся в памяти. Вы упомянули, что не хотите этого делать, но это довольно часто.

  3. При загрузке страницы вы можете добавить пользователя на страницу. Например, при загрузке страницы будет тег <script>, содержащий window.currentUser = null, или объект, представляющий пользователя. Вы можете использовать это для «начальной загрузки» состояния входа в систему без запроса AJAX.

Для пояснения, вы не можете использовать файл cookie connect.sid сам по себе, поскольку этот файл cookie - это просто идентификатор сеанса, а не сами данные сеанса. Только сервер знает данные сеанса, которые хранятся для этого пользователя, а не клиента. Вам нужен какой-то путь помимо этого файла cookie, чтобы сервер сообщал клиенту, что он вошел в систему, и клиенту для отслеживания этого состояния.

Если вы хотите, чтобы клиент узнал по самому компоненту ID, вам нужно взглянуть на параметры токена, такие как JWT.

...