关于vue-admin-template的权限控制改造

前言

在看本篇文章之前首先要了解熟悉vue-admin-template模板。

什么是vue-admin-template?

这是一个极简的 vue admin 管理后台。它只包含了 Element UI & axios & iconfont & permission control & lint,这些搭建后台必要的东西。

权限控制的改造

我们按照vue-admin-template官网运行代码会看到以下页面


由于没有写后端接口,我们全权用项目中的mock,模拟后端接口请求,我们在mock文件夹下的user.js会看到系统设置了两个登陆人,一个admin,一个editor,我们模拟添加一个新的用户limm


添加完用户之后,我们就要想,动态权限分配,就是我们用不同的角色登陆,会有不同的菜单。比如系统管理员,会有人员管理的权限、业务管理员,会有业务管理的权限。

首先我们得研究一下页面中登陆之后菜单的显示


菜单的显示

我们在这个层级目录下

看到菜单是根据路由取循环出来的

路由循环


获取路由

看到这里,大概思路就出来了,假设我登陆不同的角色,能够获得到不同的路由,这样不就实现动态权限的管理了。要想实现动态路由,我们只需要实现路由是在登陆之后请求到的,这样的话,实际开发中,我们只需要在登录之后调用后端接口,给后端传送过去roleId,后端反不同路由过来,就行了,实际需要动态的路由我们存储在数据库中,至于后端的逻辑,只需要后端根据你传送的不同角色,或者后端从session中取到用户信息,给你返回不同的路由就行。

这里我比较懒,也就没有新建页面,直接拿router.js中的form的路由去掉


注释掉form路由定义

页面菜单显示


菜单显示

此时页面显示缺少form,我们把form作为动态路由添加进来。我们观察到路由共有的元素有:

path, component,name,meta,children这五个元素所以我们就mock按照注释掉form路由定义的路由去造一下数据,代码我粘贴如下:


const Mock = require('mockjs')

const data = Mock.mock({

'dataList': [{

path: '/form',

component: 'Layout',

name:'Corm',

meta:{},

children: [{

path: 'index',

name: 'Form',

component: '/form/index',

meta: {

title: 'Form',

icon: 'form'

},

children:null

}]

}]

})

module.exports = [

  {

    url: '/vue-admin-template/router/list',

    type: 'get',

    response: config => {

      const items = data.dataList

      return {

        code: 20000,

        data: {

          total: items.length,

          dataList: items

        }

      }

    }

  }

]

然后我们在store/modules/user添加state.routerList,我们将获取的动态路由存储在store中。





api/user:

接口定义

登陆之后,在permission.js中调用获取动态路由

const menus = filterAsyncRouter(store.getters.routerList) // 1.过滤路由

router.addRoutes(menus) // 2.动态添加路由

global.antRouter = menus // 3.将路由数据传递给全局变量,做侧边栏菜单渲染工作



过滤方法

_import方法:


在router文件夹下创建文件:

根据不同的环境引用



注意事项:

后端返回的children中的component与组件中的文件夹和文件名一直,这样在_import方法中才能引用的到,否则会报错。Layout组件以字符串返回在filterAsyncRouter方法中会做出映射。

以上是全部动态路由权限的介绍,如果有不清楚的,代码已经传到码云上:https://gitee.com/jackmingming/vue-demo,欢迎大家参考。

手写不易,希望大家给个关注,给个赞!谢谢!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容