【VUE管理菜单权限】使用router.addRoutes

最近项目迭代完成最后一版需要完成清尾工作。

这里需要完成菜单的权限控制,最开始完成这项工作是吧所有的菜单都写到home模块,然后用v-if来判断菜单的显示。

Vue Router的API文档发现

router.addRoutes

函数签名:

router.addRoutes(routes: Array<RouteConfig>)

动态添加更多的路由规则。参数必须是一个符合 routes 选项要求的数组。

 

这个命令可以实现我的想法,多的不说直接上代码。(我把他直接放到权限接口请求的回调里简单粗暴)

let routes = [
          {
            path: "/",
            component: Home,
            name: "首页",
            iconCls: "#icon-shouye", //图标样式class
            children: [
              {
                path: "/main",
                component: main,
                name: "我的易到",
                hidden: false
              }
            ]
          },
          {
            path: "/",
            component: Home,
            name: "人员",
            iconCls: "#icon-renyuanxiaozu",
            children: [
              {
                path: "/userManage",
                component: userManage,
                name: "人员列表",
                hidden: false
              },           
              {
                path: "/deptManage",
                component: deptManage,
                name: "部门管理",
                hidden: user_info.ext_type ? false : true
              }
            ]
          },
          {
            path: "/",
            component: Home,
            name: "方案",
            iconCls: "#icon-dengpao",
            children: [
              {
                path: "/useCarType",
                component: useCarType,
                name: "用车方案",
                hidden: user_info.ext_type ? false : true
              }
          },
          {
            path: "/",
            component: Home,
            name: "订单",
            iconCls: "#icon-dingdan",
            //leaf: true,//只有一个节点
            children: [
              {
                path: "/order",
                component: order,
                name: "订单列表",
                hidden: false
              },
              {
                path: "/orderDetail",
                component: orderDetail,
                name: "订单详情",
                hidden: true
              }
            ]
          },
          {
            path: "/",
            component: Home,
            name: "财务",
            iconCls: "#icon-caiwu",
            children: [
              {
                path: "/recharge",
                component: recharge,
                name: "充值",
                hidden:
                  user_info.isTopCorpUser &&
                  user_info.isShow &&
                  user_info.extFlag
                    ? false
                    : true
              }
             
          },
          {
            path: "/",
            component: Home,
            name: "设置",
            iconCls: "#icon-shezhi",
            children: [
              {
                path: "/companyApprove",
                component: companyApprove,
                name: "企业认证",
                hidden: user_info.isTopCorpUser ? false : true
              },
              {
                path: "/companyData",
                component: companyData,
                name: "企业资料",
                hidden: user_info.isTopCorpUser ? false : true
              },
              {
                path: "/changepwd",
                component: changepwd,
                name: "修改密码",
                hidden: false
              }
            ]
          },
          {
            path: "/404",
            component: NotFound,
            name: "",
            hidden: true
          },
          {
            path: "*",
            hidden: true,
            redirect: { path: "/404" }
          }
        ];
        this.$router.options.routes = routes;
        this.$router.addRoutes(routes);

其中最主要的是

this.$router.options.routes = routes;

如果没有这一段就不会生效这是因为,router.options.routes 不是响应式的。

 

  • 14
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
前端的Vue权限管理是指在Vue框架中对用户角色进行权限控制,包括菜单权限和按钮权限。其中菜单权限指的是用户所能看到的菜单列表,而按钮权限指的是用户在进行操作时能够操作的按钮。 在实现前端Vue权限管理时,我们可以通过调用后台接口来获取用户的权限信息。后台接口会返回一个权限列表,其中包含菜单权限和按钮权限的相关信息。通过解析这个权限列表,我们可以构建出一个路由表,然后使用Vue的路由守卫功能来控制用户的访问权限。 在构建路由表时,我们可以使用Vuerouter.addRoutes方法来根据后台接口传递的数据动态生成路由。首先,我们需要将后台返回的权限列表转换成Vue路由的配置对象,然后通过调用router.addRoutes方法将这些配置对象添加到路由表中。这样,当用户登录成功后,根据其权限信息动态生成的路由表就会生效。 在路由守卫中,我们可以通过在每个路由的meta字段中设置对应的权限信息,然后在beforeEach钩子函数中进行权限判断。当用户访问一个需要权限的路由时,我们可以根据用户的角色和权限信息来判断该用户是否有权访问该路由。如果有权访问,则继续进行路由跳转;如果没有权限,则进行相应的处理,如跳转到一个没有权限的页面或者提示用户无权限等。 综上所述,前端的Vue权限管理是通过调用后台接口获取用户的权限信息,并根据这些信息动态生成路由表来控制用户的菜单权限和按钮权限。通过使用Vue的路由守卫功能,我们可以在每个路由的beforeEach钩子函数中进行权限判断,从而实现前端的权限管理功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值