如何在react-router-dom中使用基于角色的身份验证?

时间:2018-03-20 16:57:43

标签: javascript reactjs

我看到这个问题有很多答案。但在这里,我的问题和我现有的代码是不同的。我正在使用以下NPM模块在我的反应应用程序中进行路由。

  

从' react-router-dom'中导入{路由,交换机,浏览器路由器};

这是我的应用程序的路由文件。 https://gist.github.com/chanakaDe/241daafbc94df8543bced3695c7b7169

我想在此使用角色基础认证系统。所有角色都保存在本地存储中,我需要一种方法来检查使用何时进入路由。我有新的反应。请帮我解决这个问题。

我是否需要使用单独的文件从本地存储中获取所有角色,或者我们可以在路由文件中执行此操作吗?请建议

1 个答案:

答案 0 :(得分:1)

您可以使Route自定义组件处理路径类型。例如,如果您有两个路由:

1)管理员路线 2)主机路由

然后你将制作一个将role作为道具的组件,然后使用这个组件,你将返回你需要渲染的路线。

小例子如下所示:

class ResolveRoute extends React.Component {
   render () {
    const role = this.props.role
    return (
       {
          () => {
            if (roles === "admin") {
              <Route ...this.props />
            }
            else if (roles === "host") {
              <Route ...this.props/> // Render the routes that have host roles.
            }
            else {
              <Redirect to="/" /> // or Not found error page.
            }
          }
       }
    )
   }
}