Javascript React路由器4身份验证和重定向

Javascript React路由器4身份验证和重定向,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我正在尝试使用React路由器为我的应用程序实现身份验证系统。 但是我很难找到一个正确的方法 export default class App extends React.Component { constructor(props){ super(props); this.state = { logged : false } } isUserConnected(){ // Contact server to know if user

我正在尝试使用React路由器为我的应用程序实现身份验证系统。 但是我很难找到一个正确的方法

export default class App extends React.Component {
  constructor(props){
    super(props);

    this.state = {
      logged : false
    }

  }

  isUserConnected(){
    // Contact server to know if user is connected or not
  }

  render() {
    return (
        <Router>
          <Switch>
            <Route exact path="/" component={Homepage} />
            <Route path="/privatePart" component={Application} /> 
            <Route path="/login" component={LoginRedirection} />
            <Route component={NotFound} />
          </Switch> 
        </Router>
    )
  }
}
导出默认类App扩展React.Component{
建造师(道具){
超级(道具);
此.state={
记录:错误
}
}
isUserConnected(){
//联系服务器以了解用户是否已连接
}
render(){
返回(
)
}
}
在LoginDirection组件中,有一个登录表单,用于发送帖子以连接用户。但该组件如何在应用程序组件中将logged设置为true?


也许我应该学复述?使用它实现身份验证可能更简单?

Redux可能是一种解决方案,但您可以使用React和React路由器来实现这一点

使用
react router
,您可以使用属性
oneter
。例如,您可以使privatePart URL仅可供具有以下内容的登录用户访问:

  <Route path="/privatePart" component={Application} onEnter={requireAuth}/> 
if (localStorage.getItem("logged") === null) {
    return false;
} else {
    return true;
}

其中username是登录成功后添加到本地存储的密钥。

我认为路由器4中的onEnter prop已被object替换。对于您的anwser,使用本地存储似乎是一个好主意!顺便说一句,如果我使用redux,刷新和松散数据问题仍然是个问题?欢迎:)是的,使用redux,刷新时数据也会丢失,但是有一些解决方案,如或。不过,我认为使用本地存储通常是不错的。归根结底,这在很大程度上取决于系统的完整架构和登录过程!我想在学习Redux之前我应该等一等,但这对我以后会有帮助。非常感谢您的帮助:)