登录到react-router中的原始URL后重定向

时间:2016-11-10 13:00:04

标签: reactjs redux react-router

您好我正在使用erikras' react-redux-universal-hot-example

我的问题是,我正在尝试访问一个页面,让我们说" / chat"并且这样做我应该被重定向到" / login"页面因为它需要身份验证。完成身份验证后,我应该重定向回原来的网址,即" / chat"。

我试图使用onEnter钩子,但那不起作用。目前登录后我们将用户重定向到" / loginSuccess"页面默认(硬编码)

提前感谢所有帮助

1 个答案:

答案 0 :(得分:2)

在这里,我将如何从高层面开始......

  1. 当您重定向到/login时,请将当前路线添加到下一个路线的位置状态。
  2. 处理登录。
  3. 导航至/loginSuccess时,请检查您最初传递的路线的位置状态,然后重定向到该位置。
  4. 看起来像这样......

    // function passed to the onEnter to handle authentication check
    redirectIfNotLoggedIn(nextState, replace) {
      if (notLoggedIn) {
        replace({
          pathname: '/login',
          state: {
            redirectTo: nextState.location.pathname
          }
        })
      }
    }
    
    // function passed to the onenter to handle loginSucesss redirect
    redirectAfterLoggedIn(nextState, replace) {
      if(nextState.location.state.redirectTo) {
        replace(nextState.location.state.redirectTo) // you might need to prepend '/'
      }
    }