Существует example в react-router
репо. Они используют onEnter
свойство для проверки авторизации:
<Router history={withExampleBasename(browserHistory, __dirname)}>
<Route path="/" component={App}>
<Route path="login" component={Login} />
<Route path="logout" component={Logout} />
<Route path="about" component={About} />
<Route path="dashboard" component={Dashboard} onEnter={requireAuth} />
</Route>
</Router>
onEnter опора представляет собой функцию, которая вызывается перед входом в маршрут:
function requireAuth(nextState, replace) {
if (!auth.loggedIn()) {
replace({
pathname: '/login',
state: { nextPathname: nextState.location.pathname }
})
}
}
Функция OnEnter имеет следующий вызов подпись:
onEnter(nextState, replace, callback?)
Это дает вам доступ к состоянию, чтобы проверить, имеет ли пользователь права администратора.
В другом часто обсуждаемом подходе используются компоненты более высокого порядка. Компонентам, которым требуются права администратора, не нужно знать об этом, но они обернуты компонентом, который ограничивает доступ.
Некоторые больше информации:
https://blog.tighten.co/react-101-routing-and-auth
https://github.com/joshgeller/react-redux-jwt-auth-example
https://auth0.com/blog/secure-your-react-and-redux-app-with-jwt-authentication/
Как всегда клиент не будет доверять, и эти данные должны быть закреплены на сервере.