iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >vue后台管理怎么配置动态路由菜单
  • 410
分享到

vue后台管理怎么配置动态路由菜单

2023-06-29 20:06:27 410人浏览 安东尼
摘要

本篇内容介绍了“Vue后台管理怎么配置动态路由菜单”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!后台管理配置动态路由菜单前段时间做一个后台管

本篇内容介绍了“Vue后台管理怎么配置动态路由菜单”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

后台管理配置动态路由菜单

前段时间做一个后台管理项目,因为超级管理员可以给普通管理员动态更改权限,所以vue-element-admin里的写死的权限路由菜单就不太适合我,自己研究了好半天,经历了各种死循环,终于差不多弄出了一个,可能会有点啰嗦,总结一下:

我这个后台分为三个角色:超级管理员、企业管理员和普通管理员。其中,超级管理员可以查看所有的路由菜单,企业管理员也是固定的几个菜单,所以,超级管理员和企业管理员是我在前端写好的路由菜单里直接配置的权限,而普通管理员是不固定的,需要后台给我返回数据,自己拼接。

首先我们需要有一个登录的页面,简单点的,用户名和密码还有一个登录按钮就可以了,我用的是vue-element-admin的模板,它已经写好了,直接拿来用就可以

vue后台管理怎么配置动态路由菜单

自己在src-api文件夹中新建一个js文件来写自己的登录、获取用户信息、登出等接口(也可以换掉之前的模拟接口,在api/user.js文件)。

点击登录按钮,这时会在这个方法里面调用store-modules-user.js里的login方法,如下:

vue后台管理怎么配置动态路由菜单

store-modules-user.js里的login方法就是调用了自己的登录接口,当然,调用之前记得先引入文件

vue后台管理怎么配置动态路由菜单

上面是我引入的登录、获取用户信息、登出的接口

调用登录接口后store存储返回的token等数据(根据自己的需求来,因为我后期需要用户id,所以也把用户id存进了store里)

这时调用同页面的getInfo方法,当然,这个方法里也同样调用了获取用户信息的接口,这步是为了获取到登录的用户的角色,调用之后,将返回的用户角色名等存到store里(我还存了其它的数据,还是那句话,哪些数据需要就存哪些)

*** 这里当时我出了一个bug:当我登录进去之后刷新页面又跳到了登录的页面,说明有关键的数据没有存储上,上网一找,token在登录调用登录接口后已经用cookie存入了浏览器,那应该就是我只把id存进了store而没有存入浏览器,才导致一刷新就失去了id,所以我用localStorage/sessionStorage存入了id,在getInfo里才获取本地存储的id在存储到store中

vue后台管理怎么配置动态路由菜单

vue后台管理怎么配置动态路由菜单

 7、由于普通管理员的路由菜单是后台返给我的,所以,在getInfo这个方法中,我也直接调用了获取路由菜单的接口,将返回的数据通过拼接来生成一个完整的路由菜单,最后将这个路由菜单数组保存在store中

注:路由菜单最后一定要放404,格式 :{ path: '*', redirect: '/404', hidden: true } ,切记一定要放在最后!!!

接下来是去src/permission.js中调用store-modules-user.js里的getInfo方法,这块与模板的代码没有区别,所以就不多叙述。在此方法中调用了store-modules-permission.js里的generateRoutes的方法

vue后台管理怎么配置动态路由菜单

 我们去找一下这个方法,这个方法其实是根据传过来的role来判断它能看到的路由菜单。模板里原来的方法是根据角色和写好的路由菜单一一比较,最后把对应上权限的项放进一个数组里,我这里的超级管理员和普通管理员因为权限和路由菜单固定,所以直接套用的代码。而普通管理员,则是调用保存在store里的路由菜单数组,然后赋值给定义好的变量

vue后台管理怎么配置动态路由菜单

vue后台管理怎么配置动态路由菜单

之后需要更改的地方就没有了,就可以测试登录了。

这里我犯了一个比较大的bug:

当以普通管理员登录的时候,我进去之后菜单显示正常,可是当我不管点击哪个菜单,都给我跳到了404 。经过一番测试与排查,我找到了解决方法,是加一个延时器,加在generateRoutes方法的这个地方

vue后台管理怎么配置动态路由菜单

之后就运行成功了,但是具体原因我其实不太明白,因为我console.log(accessedRoutes) 出来的也是正常的路由菜单

这就是大体的配置动态路由菜单的过程,作为第一次配置成功的心得。

根据权限生成动态路由及导航菜单

最近在做一个后台管理项目,涉及到一些菜单权限控制,具体实现如下:(话不多说,直接上代码)

router/index.js

const Home = resolve => require(['@/views/common/Home.vue'], resolve);const AAA = resolve => require(['@/views/page/AAA.vue'], resolve);const BBB = resolve => require(['@/views/pages/BBB.vue'], resolve);const CCC= resolve => require(['@/views/pages/CCC.vue'], resolve);let routes = [{    path: '/',    component: Home,    name: '首页',    redirect: '/AAA',    hidden: true,    mate: {      icon: 'fa fa-home',      index: 'AAA'    },    children: [{      path: '/AAA',      component: AAA,      name: '主页'    }]  }]//从服务器获取路由,进行拼接,所有模块不再以import的形式引入,只能通过require方式加载!export const makeRoute = function (items) {  let routes = [];  for (var i = 0; i < items.length; i++) {    // console.log(items[i]);    items[i] = fORMatRoute(items[i]);    if (items[i].children) {      //递归处理子路由的component      items[i].children = makeRoute(items[i].children);    }  }  return items;}//格式化路由,使component挂载到路由上,生成addRoutes可用的格式const formatRoute = (item) => {  let route = item;  route.component = eval(route.component);  return route;}export default routes;

main.js(登录成功时,后台返回有权限的路由并存在状态管理器vuex中)

import Vue from 'vue'import App from './App'import VueRouter from 'vue-router'import axiOS from 'axios'import store from './store'import routes from './router/index'import { makeRoute } from './router'Vue.use(VueRouter)const router = new VueRouter({  routes})router.beforeEach((to, from, next) => {      //如果目标路由为登陆时,恢复用户原始状态    if (to.path === '/login') {      window.clearInterval(window.interval);      store.commit('loGout');    }    let allRoutes = store.getters.allRoutes;    let loginStatus = store.getters.loginStatus;      //登录成功时加载路由及模块    if (from.path === '/login' && allRoutes !== '' && loginStatus) {      let routesObj = makeRoute(store.getters.allRoutes);      router.addRoutes(routesObj);    }    //没有登录时自动跳转,开发环境免登陆时注释    if ( to.path !== '/login' && (allRoutes === '' || !loginStatus)) {      if(sessionStorage.getItem('userInfo') === null){          next({ path: '/login' })      } else {          //刷新当前页面        //重置store参数        let userInfo = JSON.parse(sessionStorage.getItem('userInfo'));        store.commit('setUser', userInfo);        if(userInfo.routes){          //重新加载路由及模块          let routesObj = makeRoute(userInfo.routes);          router.addRoutes(routesObj);        }        next({path: to.path, query: to.query});      }    }else{      //路由的next必须存在,否则无法进入下一页      next();    }  })

备注:此方案最大的好处是不用再使用require引入每一个组件并挂载到路由

“vue后台管理怎么配置动态路由菜单”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: vue后台管理怎么配置动态路由菜单

本文链接: https://www.lsjlt.com/news/326307.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue后台管理怎么配置动态路由菜单
    本篇内容介绍了“vue后台管理怎么配置动态路由菜单”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!后台管理配置动态路由菜单前段时间做一个后台管...
    99+
    2023-06-29
  • vue后台管理如何配置动态路由菜单
    目录后台管理配置动态路由菜单根据权限生成动态路由及导航菜单后台管理配置动态路由菜单 前段时间做一个后台管理项目,因为超级管理员可以给普通管理员动态更改权限,所以vue-element...
    99+
    2024-04-02
  • 配置gateway+nacos动态路由管理流程
    目录配置gateway+nacos动态路由第一步:首先是设置配置文件的配置列表第二步:配置监听nacos监听器第三步:配置nacos的yml文件nacos的智能路由实现与应用一. 概...
    99+
    2024-04-02
  • vue动态菜单怎么设置
    随着前端开发技术的不断发展,许多前端框架也一直在不断完善和发展,其中Vue框架以其简单易学、高效便捷的特性被越来越多的开发者所青睐。在Vue开发中,经常需要使用动态菜单,那么Vue动态菜单怎么设置呢?下面本文将为大家讲解一下Vue动态菜单的...
    99+
    2023-05-20
  • react 路由权限动态菜单方案配置react-router-auth-plus
    目录正文如何使用1. 配置路由2. 在应用的最外层渲染路由权限说明动态菜单正文 在 react 中做路由权限管理,一直是比较麻烦的事,不像 vue 中有进入路由前拦截的功能。在摸鱼时...
    99+
    2022-11-13
    react 路由权限动态菜单 react-router-auth-plus
  • SpringCloud Gateway动态路由怎么配置
    这篇“SpringCloud Gateway动态路由怎么配置”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spri...
    99+
    2023-07-05
  • vue-route路由管理怎么安装与配置
    这篇文章主要介绍“vue-route路由管理怎么安装与配置”,在日常操作中,相信很多人在vue-route路由管理怎么安装与配置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
  • vue动态菜单、动态路由加载以及刷新踩坑实战
    目录需求:思路:教训:分享正文:总结需求: 从接口动态获取子菜单数据 动态加载 要求只有展开才加载子菜单数据 支持刷新,页面显示正常 思路: 一开始比较乱,思路很多。想了很多 首先...
    99+
    2024-04-02
  • vue配置文件自动生成路由和菜单实例代码
    目录写在前面router.json路由生成菜单生成效果总结写在前面 每次重复写路由的时候是不是会觉得很烦,特别是项目大的时候,路由会有特别多,看都看不过来,所以这里我是有了一个ro...
    99+
    2024-04-02
  • 如何利用Vue3管理系统实现动态路由和动态侧边菜单栏
    目录前言动态路由动态侧边菜单栏总结前言 在做Vue管理系统的时候,都会遇到的一个需求:每个用户的权限是不一样的,那么他可以访问的页面(路由),可以操作的菜单选项是不一样的,如果由后端...
    99+
    2024-04-02
  • vue动态路由配置及路由传参的示例分析
    这篇文章主要介绍了vue动态路由配置及路由传参的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。动态路由:  当我们很多个页面或者组件...
    99+
    2024-04-02
  • SpringBoot+Vue实现动态菜单的思路梳理
    目录1. 整体思路2. 前端渲染3. 后端菜单生成3.1 菜单表3.2 菜单接口关于 Spring Boot + Vue3 的动态菜单,松哥之前已经写了两篇文章了,这两篇文章主要是从...
    99+
    2024-04-02
  • Vue中怎么动态设置路由参数
    Vue中怎么动态设置路由参数,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.使用this.$router.go(),与js histro...
    99+
    2024-04-02
  • Vue中怎么设置路由导航菜单栏高亮
    Vue中怎么设置路由导航菜单栏高亮,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。默认情况下,路由的导航菜单,会自动给当前菜单添加route...
    99+
    2024-04-02
  • vue动态路由指的是什么该如何配置
    今天小编给大家分享一下vue动态路由指的是什么该如何配置的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在vue中,动态路由就...
    99+
    2023-06-29
  • vue项目keepAlive配合vuex动态怎么设置路由缓存
    这篇文章主要介绍“vue项目keepAlive配合vuex动态怎么设置路由缓存”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue项目keepAlive配合vuex动态怎么设置路由缓存”文章能帮助大...
    99+
    2023-06-30
  • 揭秘VUE路由动态加载的幕后机制:深入探索路由管理的艺术
    Vue路由动态加载是一种通过JavaScript代码在运行时加载路由的方式,与传统的静态路由不同,动态加载路由可以更灵活地响应用户操作或数据变化,从而实现更复杂的路由管理。 动态加载路由的原理 Vue路由动态加载路由的原理主要分为以下几...
    99+
    2024-02-13
    Vue 路由 动态加载 路由管理 前端开发
  • TypeScript+Vue Router:动态路由管理的终极指南
    一、简介 TypeScript Vue Router是一种基于TypeScript的路由库,专门用于Vue.js应用程序。它通过提供以下功能来简化路由管理: 动态路由加载 路由导航守卫 路由元数据 二、安装和配置 要安装TypeSc...
    99+
    2024-02-15
    TypeScript, Vue Router, 动态路由, Vue.js
  • Vue Element前端应用开发之动态菜单和路由的关联处理
    目录概述1、菜单和路由的处理过程2、菜单和路由列表3、登录的过程处理概述 在我开发的很多系统里面,包括Winform混合框架、Bootstrap开发框架等系列产品中,我都倾向于动态配...
    99+
    2024-04-02
  • 怎么用vue实现动态路由
    这篇文章主要介绍了怎么用vue实现动态路由的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用vue实现动态路由文章都会有所收获,下面我们一起来看看吧。1、什么是动态路由?动态路由,动态即不是写死的,是可变的。...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作