【问题标题】:React-router, onEnter cause infinite loop with authenticationReact-router,onEnter 导致带有身份验证的无限循环
【发布时间】:2017-08-28 12:00:23
【问题描述】:

我按照这个例子:

https://github.com/ReactTraining/react-router/blob/v3/examples/auth-flow/app.js

我想阻止用户在loggedIn之后导航login路由器。

我尝试将requireAuth 放到login 路由器的onEnter 上。

但是,当用户第一次访问该页面时,他们不是loggedIn,会导致死循环。

在我的情况下,我怎样才能摆脱循环? 这是我的代码:

{
  path: 'login',
  component: Login,
  onEnter: (nextState, replace) => {
    if(!auth.loggined) {
      replace({
        pathname: '/login',
        state: {
          nextPathname: nextState.location.pathname
        }
      })
    } else {
      replace('/')
    }
  }
}

【问题讨论】:

  • 你能分享你的实现吗?可能是 App.js 或 render 函数。
  • @keshavDulal 更新

标签: reactjs react-router


【解决方案1】:

您为什么要尝试将requireAuth 添加到login 页面?

我相信你的onEnter应该是这样的

if(loggedIn){
    replace({
      pathname: '/'
    })
}

仅此而已,如果您想阻止经过身份验证的用户访问此页面。

【讨论】:

  • 是的。关键是用户没有登录。它总是会重定向到/login,导致无限循环。我更新了我的问题
  • @novaline,那你为什么在这里添加`replace({ pathname: '/login'})`?我认为这个应该从这里删除,然后一切都会如你所愿
猜你喜欢
  • 2021-08-11
  • 2013-04-07
  • 1970-01-01
  • 2017-05-22
  • 2022-10-14
  • 2018-03-24
  • 1970-01-01
  • 2018-10-16
  • 1970-01-01
相关资源
最近更新 更多