Я реализовал oAuth2.0 в приложении реакции, которое работает нормально. Однако я хочу убедиться, что это правильный подход. Кроме того, мне нужно перенаправить страницу, если в URL-адресе нет соответствия маршрута.
Мой код простой:
oAuth2.0 returnUri is http://localhost:3000/callback
My Код маршрутизатора:
<Router>
<Header/>
<Switch>
<Route path="/home" exact component={Home}/>
<Route path="/" exact component={Home}/>
<Authenticated>
<Route exact path='/callback' component={CallBackRoute}/>
<ProtectedRoute
exact
path="/profile/:id"
component={ProfilePage}/>
<ProtectedRoute path="/profile/summary/:id" exact component={ProfileSummary}/>
<Route exact path="/no-results" component={PageNotFound}/>
</Authenticated>
<Route exact path="/no-results" component={PageNotFound}/>
<Redirect to="/no-results"/>
</Switch>
</Router>
</AuthContext>
Компонент CallbackRoute:
<Route
render={props => {
if (access_token) {
return (<Redirect
to={{
pathname,
state: {
from: props.location
}
}}/>);
}
}}/>
ProtectedRoute:
<Route
{...rest}
render={props => {
if (access_token) {
return <Component {...props}/>;
} else {
return (<Redirect
to={{
pathname: "/callback",
state: {
from: props.location
}
}}/>);
}
}}/>
Основная задача компонента обратного вызова - повторно возвращаться к защищенному компоненту всякий раз, когда я получаю токен доступа от OAuth2. Компонент Protected проверяет токен доступа и, если он существует, переходит на защищенную страницу. Если нет, вернитесь к компоненту обратного вызова и попробуйте снова oAuth.
Мне было интересно, правильный ли это подход для использования oAuth. Кроме того, как мне вернуться к «NoResults», если соответствующий URL-адрес не найден?
Спасибо