如何在React / Ant Design Pro中实现经过身份验证的路由

我希望能够执行:

router.push('/compose')

如果未登录,用户将被重定向到登录页面,然后从那里重定向到/ compose。我将很高兴学习通用的React解决方案或特定的Ant Design Pro解决方案。我知道And Design Pro拥有AuthorizedRoute,但我不知道它是否可以允许它。

我正在使用react-router 4.3.1和antd 3.23.6。

谢谢

编辑:

它可能需要类似@ tyler-mcginnin的答案

function PrivateRoute ({component: Component, authed, ...rest}) {
  return (
    <Route
      {...rest}
      render={(props) => authed === true
        ? <Component {...props} />
        : <Redirect to={{pathname: '/login', state: {from: props.location}}} />}
    />
  )
}
小吃

我使用React-router,然后有条件地做到这一点。如果我有一个isAuthenticated变量(设置为true或false),并传递给props,则它看起来像这样:

    let routes = (//unauthenticated routes
        <Switch>
            <Route path = "/auth" component = {Auth} />
            <Redirect to = "/auth" />
        </Switch>
    )

    if(props.isAuthenticated){ //authenticated routes
        routes  = (
            <Switch>
                <Route path = "/manager" component = {DataManager} />
                <Route path = "/logout" component = {Logout} />
                <Redirect to = "/visualiser" />
            </Switch>
        )
    }

根据评论更新:

然后在auth组件中创建一个变量,该变量设置authRediect变量,然后在JSX中呈现它。像这样:

    // This sets up a <Redirect> component so that if the state isAuthenticated is true it will not show the /auth page and isntead will redirect to the desired component:
    let authRedirect = null;
    if (props.isAuthenticated) {
        authRedirect = <Redirect to = "/visualiser" />
    };
...

    return(
            <React.Fragment>
                    {/*The line below performs an auth redirect if the user is authenticated*/}
                    {authRedirect}
                    <h1>Welcome </h1>
            </React.Fragment>
    );

因此,基本上,您只是根据状态是否设置为已验证状态而有条件地返回authRedirect变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在ant-design react app中使用ant-design-pro组件?

如何在Ant Design React Form中禁用字段?

React-如何在Ant Design Modal中删除按钮

如何在React JS + Ant Design中收集Switch值

如何在Ant Design Pro中启用代码拆分?

如何在Ant Design表单中实现响应式布局?

如何在Ant Design中设置图标的大小?

如何在 Ant Design 中创建拆分按钮?

如何在 Ant design Tables 中禁用冻结的表列

如何在Ant Design菜单中删除填充?

如何在Ant Design中禁用SubMenu的单击事件?

在Ant Design中,如何在<Row>中将<Icon>垂直居中?

如何在Ant Design中获取所选Select组件的ID

如何在Cascader Ant Design ReactJs中显示子级?

如何为我的js服务模块使用babel实现经过身份验证的es 7装饰器

Ant Design Dropdown - 访问子菜单中的 props 值 [React]

如何定位Ant Design中的所有元素?

如何禁用Ant Design Input.Search组件中的按钮

如何删除Transfer ant-design中的下拉菜单?

如何在@ ant-design / pro-layout中使用通知菜单?

如何在 useEffect 中调用 useNavigate?- 用于 Ant Design 中的底部导航 - 移动

如何在ant-design中只展开一个折叠面板

如何在 Ant Design 表格列渲染中获取单个项目的 id

如何在 V4 中使用 Ant-design/icons 中的图标

使用setFieldsValue时如何在Ant Design Select中显示选项名称

如何在Ant Design中为分组列添加“可编辑单元格”?

Ant Design如何在“树形选择”中显示“ 3 Selected”而不是显示所有选择的值

如何在Ant Design stepper中添加自定义组件?

React Ant Design 可编辑表格