Есть много способов сделать это, но я обычно использую cookie, чтобы сохранить свой токен, полученный от службы входа, чтобы я мог продолжать навигацию по странице.
Срок действия токена истекает через некоторое время, поэтому каждый раз, когда я захожу на сайт, я проверяю на сервере, истек ли мой токен, или нет, если он не истек, я могу получить доступ к сайту немедленно, если срок его действия истек, я буду необходимо войти снова.
У вас возникла эта проблема, потому что вы сохраняете состояние пользователя как состояние реакции, состояние реакции не сохраняется при обновлении страницы и даже при использовании другого компонента-брата, поэтому вам нужно будет войти в систему для доступа к сайту.
Ну, по крайней мере, сохраните состояние аутентификации в cookie / sessionstorage, есть библиотеки для реакции и множество примеров в Интернете, чтобы сделать это. Вам лучше их прочитать, так как они уже объяснены в мельчайших подробностях, которые не вписываются в этот ответ.
======== edit
Для проверки подлинности на основе файлов cookie можно использовать пакет js-cookie package. Сохраните файл cookie после успешного входа в систему, например (очень грубый пример):
Cookies.set('is_authenticated', 'true');
тогда вы можете получить значения:
Cookies.get('is_authenticated');
Затем вы можете просто проверить, является ли значение is_authenticated
строкой true
или нет. Если это так, вы все равно можете получить доступ к странице.
Вы можете вызвать этот метод на главной странице, например, componentDidMount
, поэтому он будет проверяться каждый раз.
И если вы выйдете со страницы, просто удалите значение, например:
Cookies.remove('is_authenticated');
Итак, когда вы звоните
Cookies.get('is_authenticated');
значение будет undefined
, поэтому вам необходимо войти в систему для доступа к приложению.
Пожалуйста, обратите внимание, что это грубый пример. Если вы входите с сервера, этот сервер должен предоставить вам какой-то токен, и вы вместо этого сохраните этот токен в файлах cookie браузера.