vue后台管理之动态加载路由

在这里我们将会实现一个vue动态路由的案列,当用户登陆成功后,根据用户的角色,拿到他对应的菜单信息,并将它动态的载入到我们的路由中。

我们的通用的后台管理系统中,我们会根据权限的粗细不同,会对每个角色每个权限每个资源进行控制。同样的我们也需要实现一个这样的功能。 这篇文章我将主要讲vue端的实现,关于后台接口我就不会涉及,当我接触的时候我们的后台接口是springcloud实现。

一、思路

在vue-router对象中首先初始化公共路由,比如(404,login)等,然后在用户登陆成功,根据用户的角色信息,获取对应权限菜单信息menuList,并将后台返回的menuList转换成我们需要的router数据结构,然后通过vue-router2.2新添的router.addRouter(routes)方法,同时我们可以将转后的路由信息保存于vuex,这样我们可以在我们的SideBar组件中获取我们的全部路由信息,并且渲染我们的左侧菜单栏,让动态路由实现。

二、实现

1、公共路由定义

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)
/* Layout */
import Layout from '../views/layout/Layout'

export const constantRouterMap = [
  { path: '/login', component: () => import('@/views/login/index'), hidden: true },
  { path: '/404', component: () => import('@/views/404'), hidden: true },

  {
    path: '/',
    component: Layout,
    redirect: '/dashboard',
    name: 'Dashboard',
    hidden: true,
    children: [{
      path: 'dashboard',
      component: () => import('@/views/dashboard/index')
    }]
  },
]
export default new Router({
  scrollBehavior: () => ({ y: 0 }),
  routes: constantRouterMap
})

2、获取菜单信息

router.beforeEach((to, from, next) => {
  NProgress.start() // start progress bar
  if (getToken()) { // determine if there 
  • 18
    点赞
  • 149
    收藏
    觉得还不错? 一键收藏
  • 49
    评论
动态由配置是一种在Vue后台管理系统中根据用户权限动态生成由的方法。下面是一个示例演示如何配置动态由: 1. 首先,在后端根据用户的权限生成动态由数据。可以使用后端框架(如Node.js)从数据库或其他数据源获取用户权限信息,并根据权限信息生成对应的由数据。 2. 在前端的由配置文件中引入动态由数据。在Vue项目的由配置文件(通常是router/index.js)中,引入动态由数据,并将其添由配置中。 ```javascript import Vue from 'vue' import VueRouter from 'vue-router' import constantRouterMap from './constantRouterMap' import dynamicRouterMap from './dynamicRouterMap' // 引入动态由数据 Vue.use(VueRouter) const router = new VueRouter({ mode: 'history', base: process.env.BASE_URL, routes: constantRouterMap.concat(dynamicRouterMap) // 将动态由数据添由配置中 }) export default router ``` 3. 在前端根据用户权限动态生成由菜单。在侧边栏组件中,根据用户的权限信息,动态生成对应的由菜单。可以使用Vue的v-for指令遍历由数据,并根据权限信息判断是否显示对应的菜单项。 ```html <template> <div> <ul> <li v-for="route in routes" :key="route.path" v-if="hasPermission(route)"> <router-link :to="route.path">{{ route.name }}</router-link> </li> </ul> </div> </template> <script> export default { computed: { routes() { return this.$router.options.routes } }, methods: { hasPermission(route) { // 根据用户权限判断是否显示菜单项 // 可以根据用户权限信息和由配置中的meta字段进行判断 // 返回true表示有权限,返回false表示无权限 } } } </script> ``` 通过以上步骤,就可以实现在Vue后台管理系统中根据用户权限动态生成由,并在侧边栏中显示对应的菜单项。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值