从0开始全栈项目-04 umi配置式路由实现多级路由导航以及路由权限校验

完成了用户的登陆,接下来需要实现前端的路由规则配置.才能完成后台管理系统的选项卡切换
在这里插入图片描述
在这里插入图片描述

umi 路由官方文档.
官方文档写的很抽象,理解了半天才弄懂是什么意思.

  1. umi路由分成配置路由和约定路由,如果 .umric.ts 配置文件里面没有 route属性,则采取约定式路由
  2. 约定式路由比较蛋疼,还是配置式路由直观,很多东西可以直接设置

配置式路由

在这里插入图片描述
首先在 .umirc.ts 配置文件下添加routes属性是一个数组,里面放着各种路由页面, /login ,对应 login组件这就不谈了,一目了然,我们来看看layout的含义.
当 path 为跟路径时,我们的component指向了 layouts/文件夹下的index文件,然后该路由还有一个 routes属性,里面又写了一些路由组件.
这表示这些路由组件是根路由组件的二级路由.
接下来我们看看 layout/index文件是如何编写的
在这里插入图片描述
这么写的逻辑等同于
在这里插入图片描述
原本需要定义一个 index 组件当是根路由的时候显示,然后在组件里面做这样的操作,现在可以用上面的方式简化路由写法

路由的权限校验

有的电商平台会有一些吸引用户注册登陆的按钮,只有在登陆之后才能对用户展示,有些页面是游客也可以看的.
常规做法是在网络请求中拦截如果发现403则跳转到登陆页面,这有一点不好的就是会有一个网络请求,如果网络慢一点则用户会先看到页面然后再跳转,有了权限校验就不会了.
在这里插入图片描述
每一个路由都有一个wrappers 属性,里面是一个数组,配一个校验的功能
在这里插入图片描述
这样,当用户如果访问了 /category路由就会判断,如果没有登陆就会跳转到登陆页面

路由传参

umi的路由传参和其他的没什么区别
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Umi配置路由权限需要以下步骤: 1. 安装依赖 首先需要安装 `@umijs/plugin-access` 插件,该插件提供了路由权限控制的功能。 ```bash npm install @umijs/plugin-access --save-dev ``` 2. 配置插件 在 `.umirc.js` 或 `config/config.js` 文件中添加插件配置: ```js export default { plugins: [ ['@umijs/plugin-access', { access: 'src/access.js', }], ], }; ``` 3. 编写权限控制文件 在 `src` 目录下创建 `access.js` 文件,该文件用于定义路由权限控制规则。 ```js export default function access(initialState) { const { currentUser } = initialState || {}; return { canReadPage1: currentUser && currentUser.role === 'admin', canReadPage2: currentUser && currentUser.role === 'user', }; } ``` `access.js` 文件需要导出一个函数,并接受一个参数 `initialState`,该参数包含了当前用户的信息等状态。函数需要返回一个对象,对象中定义了每个路由的访问权限。 在上面的例子中,我们定义了两个权限:`canReadPage1` 和 `canReadPage2`,分别表示访问页面1和页面2的权限。如果用户拥有相应的权限,即 `currentUser.role` 等于 `admin` 或 `user`,则返回 `true`,否则返回 `false`。 4. 配置路由路由配置中使用 `access` 属性指定路由访问权限: ```js export default [ { path: '/page1', component: '@/pages/Page1', access: 'canReadPage1', }, { path: '/page2', component: '@/pages/Page2', access: 'canReadPage2', }, ]; ``` 在上面的例子中,我们将 `access` 属性分别指定为 `canReadPage1` 和 `canReadPage2`,表示只有当用户拥有对应的权限时才能访问对应的路由。 以上就是在 Umi配置路由权限的步骤。通过上述配置,我们可以实现简单的路由权限控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值