Я делаю регистрацию в моем приложении. Когда пользователь успешно прошел валидацию и отправил форму на сервер токен сохраняется в localStorage и происходит редирект на страницу home. Тоесть если токена нет попасть на страницу home невозможно.
Я реализовал это в файле Home.js вот так:
const Home = () => {
const token = localStorage.getItem("myToken")
return (
<div>
{!token && <Redirect to="/" />}
<Header/>
<h1 >Home page</h1>
</div>
)
}
Но человек, который проверял мое приложение, написал:
Не самый лучший подход. Допустим у нас может быть много таких компонентов - и нам каждому придется такую логику писать? А если она изменится - то потом везде бегать менять?
Это он про то что логику :
{!token && <Redirect to="/" />}
я напиисал конкретно в файле Home.js
И он предложил, как это можно сделать по-другому:
Лучшим вариантом будет проверять у пользователя token на этапе роутинга, то есть разделить все роуты в приложении на неавторизованные и авторизованные
Это мой файл App.js, где у меня роутинг моего приложения:
const history = createBrowserHistory();
class App extends React.Component {
render(){
return (
<BrowserRouter history={history}>
<div className="wrapper">
<div className="content">
<Switch>
<Route exact path="/" component={SignupForm} />
<Route path="/home" component={Home} />
<Route path="/login" component={LoginForm} />
</Switch>
</div>
</div>
</BrowserRouter>
)
}
}
И у меня вопрос. Как можно сделать проверку наличия токена в localStorage на этапе роутинга(в файле App.js)?