Перенаправить маршрут на маршрут по умолчанию, если не найдено совпадений в URL-адресе, возвращающемся из OAuth2 - PullRequest
0 голосов
/ 29 мая 2020

Я реализовал 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-адрес не найден?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...