位置: IT常识 - 正文

(vue权限管理)前端路由表角色权限管理,通过登录不同角色侧边栏显示对应页面(vue权限管理面试题)

编辑:rootadmin
(vue权限管理)前端路由表角色权限管理,通过登录不同角色侧边栏显示对应页面 前端路由表角色权限管理,通过登录不同角色侧边栏显示对应页面demo根据vue-admin-template为基础修改,首先展示实现的效果

推荐整理分享(vue权限管理)前端路由表角色权限管理,通过登录不同角色侧边栏显示对应页面(vue权限管理面试题),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue权限管理添加用户权限怎么实现,vue权限管理如何实现,vue权限管理菜单,vue权限管理菜单,vue权限管理模块,vue权限管理面试题,vue权限管理动态路由,vue权限管理实现,内容如对您有帮助,希望把文章链接给更多的朋友!

1. 首先在src/router/index.js中添加路由表,其中constantRoutes 设置的为所有角色可见的路由,asyncRouterMap为对应权限人员可见路由,demo路由表代码如下:import Vue from 'vue'import Router from 'vue-router'Vue.use(Router)//避免导航守卫报错const originalPush = Router.prototype.pushRouter.prototype.push = function push(location, onResolve, onReject) { if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject) return originalPush.call(this, location).catch(err => err)}/* Layout */import Layout from '@/layout'//所有人可见export const constantRoutes = [ { path: '/login', component: () => import('@/views/login/index'), hidden: true }, { path: '/404', component: () => import('@/views/404'), hidden: true }, { path: '/', component: Layout, redirect: '/dashboard', children: [ { path: 'dashboard', name: 'Dashboard', component: () => import('@/views/dashboard/index'), meta: { title: '首页', icon: 'dashboard' } } ] }, { path: '/example', component: Layout, children: [ { path: 'index', name: 'Table', component: () => import('@/views/table/index'), meta: { title: '所有人可见', icon: 'table' } } ] }, // 404 page must be placed at the end !!! { path: '*', redirect: '/404', hidden: true }]//相应权限人员可见export const asyncRouterMap = [ { path: '/form', component: Layout, children: [ { path: 'index', name: 'Form', component: () => import('@/views/form/index'), meta: { title: '所有人可见', icon: 'form', role: ['admin'] } } ] }, { path: '/system', component: Layout, redirect: 'system/test', name: 'System', alwaysShow: true, meta:{title:'系统管理', icon: 'nested', role: ['admin','editor']}, children: [ { path: '权限管理', name: 'test', name: 'Test', component: () => import('@/views/system/index'), meta: { title: '权限修改', icon: 'table', role: ['admin'] } } ] }]const createRouter = () => new Router({ // mode: 'history', // require service support scrollBehavior: () => ({ y: 0 }), routes: constantRoutes })const router = createRouter()// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465export function resetRouter() { const newRouter = createRouter() router.matcher = newRouter.matcher // reset router}export default router2.在src/api/user.js中创建用户登录,获取用户信息,以及登出的接口

3.在store/modules/user.js文件,添加获取角色权限role的信息(vue权限管理)前端路由表角色权限管理,通过登录不同角色侧边栏显示对应页面(vue权限管理面试题)

4.在src/store/modules/目录下创建permission.js,来存储不同权限动态添加的路由表,文件代码如下:import { asyncRouterMap, constantRoutes } from '@/router'/** * Use meta.role to determine if the current user has permission * @param role * @param route */function hasPermission(role, route) { if (route.meta && route.meta.role) { // return roleArr.some(role => route.meta.role.includes(role)) //当给的角色权限为数组形式可采取该方式判断返回值 return route.meta.role.includes(role)?true:false //当角色权限为字符串时,采用该方式判断 } else { return true }}/** * 将符合相应权限的路由表筛选出来 * @param routes asyncRouterMap * @param role */export function filterasyncRouterMap(routes, role) { const res = [] routes.forEach(route => { const tmp = { ...route } if (hasPermission(role, tmp)) { console.log(111); if (tmp.children) { tmp.children = filterasyncRouterMap(tmp.children, role) } res.push(tmp) } }) return res}const permission = { state: { routes: [], addRoutes: [] }, mutations: { SET_ROUTES: (state, routes) => { state.addRoutes = routes state.routes = constantRoutes.concat(routes) } }, actions: { generateRoutes({ commit }, role) { return new Promise(resolve => { let accessedRoutes //如果角色是admin if (role.includes('admin')) { //将route.js中的admin权限人员可见的路由表加入,此处我们只有admin和editor两个角色 accessedRoutes = asyncRouterMap || [] } else { accessedRoutes = filterasyncRouterMap(asyncRouterMap, role) || [] } commit('SET_ROUTES', accessedRoutes) resolve(accessedRoutes) }) } }}export default permission5.在src/store/getters.js中,代码如下(注意:state.permission.routes别写成了state.user.routes):

6.在src/store/index.js中,代码如下

7.最后在src/permission.js的路由导航守卫中添加动态路由,此处用到了vue-router的addRoute函数,修改处代码如下:

8.在src/layout/components/Sidebar/index中,添加新的路由表,代码如下:

最终可以实现文章首部动图效果,简单的记录下前端路由表权限管理功能实现,若有不正确处,评论处可交流讨论,文末会贴源码,安装依赖后可直接运行。

文末demo码云链接:权限管理demo

本文链接地址:https://www.jiuchutong.com/zhishi/298562.html 转载请保留说明!

上一篇:【蓝桥杯Web】第十四届蓝桥杯(Web 应用开发)模拟赛 2 期-职业院校组(蓝桥杯b组2020)

下一篇:学计算机选择什么编程语言好一些?(学计算机选择什么专业)

  • 苏康码变黄了怎么办(苏康码变黄了怎么变回来)

    苏康码变黄了怎么办(苏康码变黄了怎么变回来)

  • 酷狗怎么调音乐倍速(酷狗怎么调音乐速度)

    酷狗怎么调音乐倍速(酷狗怎么调音乐速度)

  • 华为p30时间怎么设置24小时制(华为p30时间怎么调整)

    华为p30时间怎么设置24小时制(华为p30时间怎么调整)

  • word打印缩放比例怎么设置(word打印缩放比例不见了怎么恢复)

    word打印缩放比例怎么设置(word打印缩放比例不见了怎么恢复)

  • qq怎么开启相册权限(qq怎么打开相册)

    qq怎么开启相册权限(qq怎么打开相册)

  • 闲鱼永久禁言能不能恢复(闲鱼永久禁言突然可以说话了?)

    闲鱼永久禁言能不能恢复(闲鱼永久禁言突然可以说话了?)

  • 为什么库乐队设置不了铃声(为什么库乐队设置的铃声音质都不好)

    为什么库乐队设置不了铃声(为什么库乐队设置的铃声音质都不好)

  • hsyv6是什么网线(hsyv6e是什么网线)

    hsyv6是什么网线(hsyv6e是什么网线)

  • 红包没有领取怎么看对方给你发了多少(红包没有领取怎么退回来)

    红包没有领取怎么看对方给你发了多少(红包没有领取怎么退回来)

  • 微信怎么引用别人的话回复(微信怎么引用别人发过来的文字)

    微信怎么引用别人的话回复(微信怎么引用别人发过来的文字)

  • 快手通过私信添加了我是什么意思(快手私信人怎样加微信)

    快手通过私信添加了我是什么意思(快手私信人怎样加微信)

  • 联想小新14休眠怎么唤醒屏幕(联想小新14休眠快捷键)

    联想小新14休眠怎么唤醒屏幕(联想小新14休眠快捷键)

  • 淘宝直播的优势和劣势(淘宝直播的优势和劣势有哪些方面)

    淘宝直播的优势和劣势(淘宝直播的优势和劣势有哪些方面)

  • plc选型的主要依据(plc的选用原则是什么?)

    plc选型的主要依据(plc的选用原则是什么?)

  • 歌手耳朵上戴的耳机有什么用(歌手耳朵上戴的而返能起到什么作用)

    歌手耳朵上戴的耳机有什么用(歌手耳朵上戴的而返能起到什么作用)

  • 微信怎么看已经删除的聊天记录(微信怎么看已经删除的好友聊天记录)

    微信怎么看已经删除的聊天记录(微信怎么看已经删除的好友聊天记录)

  • 快手收藏的表情为什么会没有(快手收藏的表情包在哪里找)

    快手收藏的表情为什么会没有(快手收藏的表情包在哪里找)

  • 华为手机p40 pro什么时候上市(华为手机p40pro屏幕碎了维修大概要多少钱)

    华为手机p40 pro什么时候上市(华为手机p40pro屏幕碎了维修大概要多少钱)

  • 步步高s5和s5c有什么区别(步步高s5与s5pro)

    步步高s5和s5c有什么区别(步步高s5与s5pro)

  • 苹果xsmax怎么把声音调大(苹果xsmax怎么把两张照片合在一起)

    苹果xsmax怎么把声音调大(苹果xsmax怎么把两张照片合在一起)

  • 手机贴吧怎么看回复(手机贴吧怎么看等级头衔)

    手机贴吧怎么看回复(手机贴吧怎么看等级头衔)

  • 12306人证核验始终不通过怎么办(12306人证核验43003)

    12306人证核验始终不通过怎么办(12306人证核验43003)

  • steam初始邮箱能改吗

    steam初始邮箱能改吗

  • 华为手环3pro和4区别(华为手环3pro和4pro哪个更好)

    华为手环3pro和4区别(华为手环3pro和4pro哪个更好)

  • 嘀嗒拼车怎么评价车主(嘀嗒出行怎么评论)

    嘀嗒拼车怎么评价车主(嘀嗒出行怎么评论)

  • 苹果5s怎么录屏幕视频(苹果x怎么录屏)

    苹果5s怎么录屏幕视频(苹果x怎么录屏)

  • cpu的时钟频率(CPU的时钟频率是专门用来记时间的)

    cpu的时钟频率(CPU的时钟频率是专门用来记时间的)

  • 计提印花税会计分录
  • 中级会计报名必须用ie浏览器吗
  • 未分配利润转增股本会计处理
  • 年末结转净利润
  • 分公司可以独立开银行账户吗
  • 人力资源公司开办条件
  • 年度纳税总额的时间怎么计算
  • 缴纳的增值税比账面的少怎么做账
  • 视同销售销售额的确定方法
  • 企业所得税债务重组所得
  • 公司团建活动奖状模板
  • 增值税缴纳地方怎么填
  • 增值税申报进项抵扣汇总表在哪里
  • 关于小规模纳税人
  • 企业减免所得税
  • 发票联丢失怎么做账
  • 少数股东损益为正,归属毌公司为负
  • 招标文件中资金性质应填什么
  • i912900k用什么主板好
  • 未分配利润是怎么算出来的
  • 出口退税是怎么退
  • 公司购买的财产保险服务可以抵扣进项吗
  • 什么是土地使用者依照法律规定
  • linux yum update
  • Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
  • 税务登记 申报
  • 冲减其他应收款摘要怎么写
  • php怎么上传图片
  • 其他应付款不需要支付的怎么处理,预算会计
  • php 分页
  • 固定资产减少的账务处理
  • php include require
  • zen框架
  • 运输费怎么做会计分录
  • 营业外支出科目代码
  • 出口免抵退转免税
  • sse后端向前端推送 前端只能收到 末尾的值
  • 代扣代缴增值税附加税减免政策
  • 增值税专用发票和普通发票的区别
  • 汇兑损益的种类
  • 对公付款对方不开发票可以吗
  • 小额支出的两种形式
  • mysql 表不存在报错信息
  • 银行存款日记账电子表格模板
  • 退税登记怎么办理
  • 个人所得税计入应付职工薪酬吗
  • 研发费用是否包含增值税
  • 权益法下股权投资包括
  • 长期待摊费用如何评估
  • 流动比率与速动比率下降说明什么
  • 大修和维修怎样定义
  • 采购返利是什么意思
  • 研发费用计入营业成本还能加计扣除吗
  • 企业利润的构成内容
  • 资产负债率比率
  • 老板个人借款要纳税吗
  • 待摊费用是什么意思
  • 购入固定资产怎么折旧
  • 浅谈mysql explain中key_len的计算方法
  • win7安装mysql5.5
  • 怎么提高windows7性能
  • mac系统操作的小技巧
  • mac应用商店未能完成购买
  • xpkw
  • win8.1 升级
  • win7系统局域网无法看到其他电脑
  • win8怎么打开蓝牙设置
  • win7计划任务设置
  • windows8无法安装wps
  • js浅拷贝的方法
  • oracle shell脚本
  • unity3d动画系统
  • python列表组成字符串
  • javascript面向对象编程 PDF
  • js所有知识点
  • 保险公司代收2.8万
  • 3.0排量 车船税
  • 北京通个人认证
  • 网上报税失败什么原因
  • 网上交了购置税你要打印出来吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设