Моя форма входа отображается, даже если я уже прошел аутентификацию с использованием React Routing? - PullRequest
0 голосов
/ 24 апреля 2020

Я использую Redx Saga в своем приложении, у меня есть форма входа в систему, и когда я аутентифицируюсь, я использую Redirect Component для перехода в приложение, я делаю это, конечно, после изменения моего состояния connectedUser, что так :

const initialState = {
  loading: false,
  user: {},
  status: ""
};

При аутентификации мое состояние меняется на status:"AUTH" и user: { // user data }, и вот как я перенаправляю на компонент приложения, и вот так выглядит мой метод рендеринга компонента аутентификации:

render() {

    if (this.props.connectedUser.status === "AUTH") {
      return <Redirect to="/" />;
    }

    return MyLoginForm
}

Мои маршруты определены во всем контейнере приложения:

function App(props) {
  return (
    <ThemeProvider theme={theme}>
      <I18nProvider locale={props.language.language}>
        <BrowserRouter>
          <Switch>
            <Route exact path="/" component={Application}></Route>
            <Route path="/authenticate" component={Authentification}></Route>
          </Switch>
        </BrowserRouter>
      </I18nProvider>
    </ThemeProvider>
  );
}

const msp = state => ({ language: state.language });

export default connect(msp, null)(App);

Это работает нормально, кнопка разъединения тоже работает нормально, но проблема возникает, когда я перенаправлен в свое приложение (имеется в виду этот маршрут "/").

Я хочу, чтобы при обновлении sh страницы меня не перенаправляли на страницу аутентификации. Почему я туда иду? очевидно, что мое состояние снова является исходным, снова состояние "".

Я не спрашиваю код, а представляю, как это реализовать.

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

1 Ответ

1 голос
/ 24 апреля 2020
I want that when I refresh the page, I don't get redirected to the authentification page, Why I am going there ? it is obvious that my state is the initial state again, the satus is "" again.

Конечно! Refre sh страница снова будет в исходном состоянии.

Прежде всего, вам необходимо сохранить текущую аутентификацию после входа в систему. Я предлагаю вам использовать redux-sessionstorage

Далее , в компоненте Аутентификация вы должны отправить действие, чтобы получить текущую аутентификацию и обновить статус в вашем штате.

...