У меня есть приложение, которое использует redux-oid c в качестве помощника для аутентификации пользователей. Я просмотрел пример приложения о том, как правильно настроить аутентификацию пользователей, но в примере им нужно будет проверить, вошел ли пользователь на каждой странице, прежде чем отправлять его на страницу входа.
Приложение, которое я создаю, имеет маршрутизатор с множеством различных маршрутов. Мне было интересно, как проверить, если пользователь вошел в систему, независимо от того, какой маршрут они вводят, не дублируя код для каждого компонента?
Маршрутизатор:
export default function Routes(props) {
return (
// Replace Router with our own component and add authenication
// https://medium.com/better-programming/building-basic-react-authentication-e20a574d5e71
<Router history={history}>
<Route path="/" component={HomePage}/>
<Route path="/test1" component={TestPage1}/>
<Route path="/test2" component={TestPage2}/>
<Route path="/test3" component={TestPage3}/>
<Route path="/callback" component={CallbackPage} />
</Router>
);
}
Это пример Маршрутизатор с 4 маршрутами: Home, Test1, Test2 и Test3.
Домашняя страница:
function HomePage(props) {
const { user } = props;
return !user || user.expired ? <LoginPage /> : (
<div>
<h1>Awesome Main Page!</h1>
<h3>{user ? user.profile.name : "Mister Unknown"}</h3>
</div>
);
}
В компоненте Домашняя страница мы проверяем, аутентифицирован ли уже пользователь , Если это не так, то он переходит на страницу входа.
Тестовая страница:
function TestPage1(props) {
const { user } = props;
return !user || user.expired ? <LoginPage /> : (<div><h1>Test Page 1</h1><h3>{user ? user.profile.name : "Mister Unknown"}</h3></div>);
}
На каждом из компонентов тестовой страницы в маршрутизаторах мы также должны проверить, является ли пользователь проверку подлинности. Кажется, это go противоречит принципам DRY, и для каждого нового маршрута, который мы создаем, мы должны будем снова проверять аутентификацию.
Это нормальный / правильный способ проверки аутентификации или есть лучший как следовать принципам DRY?