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。
我正在尝试创建一个受保护的路由,当用户未被授权使用 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。