即使我已经使用React Routing进行身份验证,我的登录表单也会显示?

问题描述 投票:0回答:1

[我在我的应用程序中使用redux saga,我有一个登录表单,当我通过身份验证时,我使用重定向组件移至该应用程序,我当然会在更改connectedUser状态后执行此操作,就像这样:

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

[当验证我的状态时更改为status:"AUTH"user: { // user data },这是我如何重定向到Application组件,这是我的Authentication组件呈现方法的样子:

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);

这可以正常工作,断开按钮也可以正常工作,但是当我重定向到我的应用程序(即此路由“ /”)时,会出现问题。

我希望当我刷新页面时,我不会重定向到身份验证页面,为什么要去那里?很明显,我的状态又是初始状态,状态又是“”。

我不是要代码,而是一个想法,如何实现这一点。

我试图将这种状态放入我的localStorage中,但是我不认为这是一个好习惯,我也发现了一个问题,因为如果更改了LocalStorage,那么我将不得不重新呈现该组件,因此可以验证。

reactjs authentication redux react-router redux-saga
1个回答
1
投票
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.

当然!刷新页面将再次恢复初始状态。

首先,登录后需要存储当前身份验证。建议您使用redux-sessionstorage

接下来,在身份验证组件中,您应该调度一个操作以获取当前身份验证并更新您的状态。

© www.soinside.com 2019 - 2024. All rights reserved.