Как правильно установить свойство (если пользователь вошел в систему) из cookie после открытия страницы или F5 в React с роутером и приставкой - PullRequest
0 голосов
/ 15 октября 2018

Я хотел бы знать, что является лучшей практикой в моем случае.

Я проверяю куки в конструкторе приложений, если есть сохраненный токен.Если это так, я отправляю действие, которое установит для свойства isAuth значение true.

Моя проблема заключается в том, что я буду перенаправлен на вход в систему, поскольку isAuth является ложным с самого начала.

Я пришелс решением, которое я установлю isAuth после проверки сеанса, и я не буду ничего переделывать до тех пор. Это нормально? И даже если так, разве нет лучшего решения для этого?

return (
    <div>
         <Router>
              {isAuth ? (
                   <Switch>
                        auth routes...    
                   </Switch>
                   ) 
                   : (
                   <Switch>
                        login and redirect to login
                   </Switch>
                   )}
         </Router>
     </div>
);

1 Ответ

0 голосов
/ 15 октября 2018

Я обычно создаю компонент PrivateRoute, который отображает компоненты Route или Redirect после проверки состояния входа в систему, что-то вроде:

export const PrivateRoute = ({ component: Component, ...otherProps }) => (
    <Route
        { ...otherProps }
        render={ props => (
            isLoggedIn()
            ? <Component {...props} />
            : <Redirect to={ Paths.LOGIN } />
        )}
    />
)

Вы должны заменить мой метод isLoggedIn и мойPaths.LOGIN констант с вашим регистром.

Тогда вы просто используете их как:

<PrivateRoute path="/admin/something" component={ MyAdminPage } />
<Route path="/non/logged/in/route" component={ MyNonLoggedInPage } />
<Route path="/login" component={ LogInPage } />
...