Found Router (for Relay Modern) 受保护的授权路由

Found Router (for Relay Modern) Protected auth route

我正在尝试创建一个受保护的路由,当用户未被授权使用 Found Router for Relay Modern 时,该路由将重定向到 /login,基于 React Router 给出的示例:

const PrivateRoute = ({ component: Component, ...rest }) => {
  return (<Route {...rest} render={props => {
    if (!props) return
    if (Component && props && props.viewer) {
      return (<Component {...props} />)
    } else {
      throw new RedirectException('/login')
    }
  }}
  />)
}

我正在用真正的登录逻辑替换 fakeAuth,但其余部分是一样的。路线只是不呈现。

Found Router 似乎对围绕此特定问题的示例不感兴趣。有什么想法吗?

我最终拆分了我的登录和认证路由:

export default makeRouteConfig(
  <Route>
    <LoginRoute exact path='/login' Component={Login} query={LoginQuery} />
    <PrivateRoute path='/' Component={App} query={AppQuery}>
  </Route>
)

并像这样扩展 LoginRoute 的路线:

export class LoginRoute extends Route {
  render({ Component, props }) {
    if (!props) return undefined
    if (Component && props && props.viewer) {
      throw new RedirectException('/')
    }
    return (<Component {...props} />)
  }
}

PrivateRoute 看起来很像,但在没有观众的情况下有不同的重定向。

效果很好。

该项目的创建者 Jimmy Jia 提出了一些其他建议,我最终没有采纳这些建议,但可能对未来的读者有用。请参阅我已关闭的问题 here