VUE-ELEMENT-ADMIN中动态生成路由是怎么做的?

VUE-ELEMENT-ADMIN中动态生成路由是怎么做的?

1.执行login.vue中的登录事件handleLogin,跳转登录主页

请添加图片描述

其中触发store/user下的login

请添加图片描述

设置token到cookie

在这步执行router路由跳转前执行路由beforerouter

请添加图片描述

首先检测是否有token,由于刚刚设置过了,此时你要跳转的肯定不是登录界面,故此时走else

此时hasRoles从store中获取的值为初始值,也就是[],故此时hasRoles为false

所以会在嵌套的if(hasRoles)逻辑中进入else代码块,如下

请添加图片描述

此步骤执行了store/user.js中的getInfo和generateRoutes

请添加图片描述
请添加图片描述
下图方法会进行过滤,返回符合用户角色权限的路由表
请添加图片描述

将刚刚为空数组的roles赋值为当前登录角色的权限列表,比如:[‘admin’]

请添加图片描述
上图,获取到过滤后的当前角色能看到的router列表,接着走刚刚beforerouter中的逻辑会重新路由,此时roles就不为空了

由于上一步骤中mutation中的SET_ROUTES,所以在navbar中,会默认接受此时的所有路由,prop中的item是当前路由,部分router的hidden为true,此类为login或404,所以不会在此页显示,其他正确的界面都会显示,到此完成

请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值