У меня есть реакционный узел express приложение. На стороне клиента я использую реагирующий маршрутизатор, например:
export default function App() {
return (
<div className="App">
<Router>
<MenuBar/>
<Switch>
<Route exact path="/" component={Main}/>
<Route path="/signin" component={SignIn}/>
<Route path="/signup" component={SignUp}/>
<Route path="/search" component={Search}/>
<Route path="/post" component={Post}/>
</Switch>
</Router>
</div>
);
}
На стороне сервера у меня есть паспорт с использованием локальной стратегии и стратегии Google. После успешного входа в систему, я вижу, что req.user существует на стороне сервера, когда есть ax ios вызов сервера от клиента, поэтому я предполагаю, что это один из способов проверки, если пользователь вошел в систему.
My Вопрос в том, если я хочу, чтобы мое приложение реагирования имело другое поведение, например, в зависимости от состояния входа пользователя, вместо входа в систему вместо кнопки входа используется кнопка «Выход», а URL «/ post» доступен только для пользователя, вошедшего в систему (перенаправление на "/" если пользователь не вошел в систему), как я могу сохранить состояние входа пользователя в систему на стороне клиента?
Насколько я понял, хранение этих данных в Context или Redux будет иметь проблемы при обновлении страницы, так как данные исчезнут после refre sh, верно? Нужно ли использовать
useEffect((//axios call to check auth state)=>,[])
во всех компонентах маршрутизатора и обновлять базу локальных состояний по ответу сервера? Есть ли лучший способ?