我有一条使用正则表达式通过 React 动态生成视图的路由。
<Route path='/(one|two|three)/' component={View} />
我想做一些访问控制,以便只有特定用户才能访问各种端点。它看起来像“您是允许访问视图 1,但视图 2 和 3 被拒绝的组的一部分”。
这可能在这样定义的路线中吗?单独定义路由然后定义授权会更容易吗?
任何帮助都是极好的!
我有一条使用正则表达式通过 React 动态生成视图的路由。
<Route path='/(one|two|three)/' component={View} />
我想做一些访问控制,以便只有特定用户才能访问各种端点。它看起来像“您是允许访问视图 1,但视图 2 和 3 被拒绝的组的一部分”。
这可能在这样定义的路线中吗?单独定义路由然后定义授权会更容易吗?
任何帮助都是极好的!
我已经成功地制作了一个PrivateRoute
或AuthenticatedRoute
组件来检查权限,然后决定是渲染某个组件还是重定向到登录页面或其他适当的页面。
这是一个完整的教程。
本教程未涵盖的一个复杂性是,您不想检查用户是否已登录,还要检查他们拥有的权限以及他们的权限是否满足路由条件。您可以根据需要定义它。您可以要求用户至少拥有权限列表中的一项,您可以要求他们拥有所有权限列表。
对于您的情况,我将只有 3 个PrivateRoute
这样的:
<PrivateRoute path='/one' component={View1} permissionsRequired={["View1Permission"]}/>
<PrivateRoute path='/two' component={View2} permissionsRequired={["View2Permission"]}/>
<PrivateRoute path='/three' component={View3} permissionsRequired={["View3Permission"]}/>
如果用户转到其中一个路由,PrivateRoute
则将检查他们是否有权限,如果有,则渲染View
,如果没有,则重定向到他们有权访问的某个适当页面。