在现代 Web 应用程序中,路由权限控制是至关重要的。如果没有正确的路由权限控制,那么可能会导致敏感信息泄露、未经授权的访问或其他安全漏洞。在 React 开发中,React Router 是一个流行的路由器,可以轻松创建 Single Page Application(SPA)应用程序。不过,如何使用 React Router 实现路由权限控制呢?本文将介绍如何使用 React Router 实现简单的路由权限控制。
路由权限控制是什么?
路由权限控制简单来说就是控制用户在页面中可以访问哪些内容。实现路由权限控制可以使你的应用程序更加安全。
通常来说,每个路由都应该有“公共”和“私有”访问级别。公共路由是所有用户都可以访问的,而私有路由仅限于已经经过身份验证的用户才能访问。
开始路由权限控制
首先,我们需要安装 React Router,如果你还没有安装的话。使用下面的命令来安装 React Router:
npm install react-router-dom
接下来,我们需要创建一个包含路由权限控制的示例。
开发人员通常会在创建路由配置时定义每个路由的级别。在本例中,我们将使用一个简单的示例。假设你正在开发一个网站,这个网站有以下两个页面:
- /home - 首页,所有用户都能够访问
- /dashboard - 仪表板,只有已登陆的用户才能访问
在这个示例中,我们需要定义两个路由级别:公共和私有。/home 页面将是公共路由,并且将在不需要身份验证的情况下可用。/dashboard 页面将是私有路由,并且需要身份验证才能访问。
下面是一个示例路由配置:
-- -------------------- ---- ------- ------ ----- ---- -------- ------ - ------------- -- ------- ------ ------ - ---- ------------------- ------ -------- ---- ------------------- ------ ------------- ---- ------------------------ ------ --------- ---- -------------------- ------ ------------ ---- ---------------------------- -------- ----- - ------ - -------- -------- ------ ----- -------- -------------------- -- ------- ------------- --------------------- -- ------------- ----------------- ------------------------- -- --------- --------- -- - ------ ------- ----
上面的代码中,我们使用 <Switch>
组件包裹了路由,这样 React Router 将使用第一个匹配的路由。我们还定义了三个路由,每个路由代表一个页面。
/
:使用exact
prop 来指定当路径精确匹配当路径时,渲染该路由页面/login
:登陆页面/dashboard
:仪表板页面
我们还定义了一个 <PrivateRoute>
组件,该组件负责检查当前用户是否已经登陆。如果用户已经登陆过,那么这个组件会渲染指定的组件,否则会将用户重定向到登陆页面。
这个 PrivateRoute 组件的代码如下:
-- -------------------- ---- ------- ------ ----- ---- -------- ------ - --------- ----- - ---- ------------------- -------- -------------- ---------- ---------- ------- -- - ------ - ------ --------- ------------- -- ---------------------------------- - ---------- ---------- -- - --------- ----------- -- - -- -- - ------ ------- -------------
上面的代码中,我们使用了 React Router 的 <Redirect>
组件来将用户重定向到登陆页面。如果用户已经登陆过,那么这个组件将会使用 <Component>
渲染指定的组件作为响应。
运行示例
运行以下命令启动开发服务器:
npm start
通过访问 http://localhost:3000 来查看示例应用程序。你可以单击“仪表板”链接,因为未登陆,所以你将被重定向到登陆页面。在登陆页输入任意用户名和密码,然后单击“登陆”按钮。此时,你将重定向到仪表板页面。
结论
React Router 可以轻松地帮助开发人员实现路由权限控制。在本文中,我们创建了一个简单的单页面应用程序,并使用 React Router 实现了路由权限控制。通过使用 <Switch>
、<Route>
和 <Redirect>
组件,我们能够轻松地定义公共和私有路由。另外,通过创建一个 <PrivateRoute>
组件,我们可以控制访问仪表板页面的权限。
示例代码
https://codesandbox.io/s/private-route-demo-6imr0
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67073a51d91dce0dc865fa98