美文网首页vue生命周期
关于vue-admin-template的权限控制改造

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

作者: travelClark | 来源:发表于2021-01-25 17:17 被阅读0次

前言

在看本篇文章之前首先要了解熟悉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,欢迎大家参考。

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

相关文章

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

    前言 在看本篇文章之前首先要了解熟悉vue-admin-template模板。 什么是vue-admin-temp...

  • 基于vue-element-admin 的权限管理

    1.项目中要使用到权限管理及左侧菜单动态加载 基于此。2.项目模板使用的是vue-admin-template这个...

  • Spring+Shiro权限控制

    权限控制在做项目中,是必不可少的。而关于权限控制,目前跟spring兼容比较好的有spring security和...

  • Vue权限控制

    需求 页面级别权限控制1.URL路由权限控制2.导航菜单权限控制3.超链接权限控制 元素界别权限控制1.按钮元素权...

  • RBAC权限模型[完整]

    RBAC权限模型[完整] 一、前言 权限一句话来理解就是对资源的控制,对web应用来说就是对url的控制,关于...

  • 【黑马程序员济南校区】权限控制方式讲解

    【济南校区】权限控制方式讲解 权限控制两种主要的方式:细粒度方法级别的权限控制、粗粒度URL级别权限控制 1.1细...

  • 21_shiro总结

    关于shiro总结 1 一般来说,实现权限控制至少要五张表:用户 --- 角色 --- 权限 ==> 三张实...

  • django进阶技巧

    权限控制 在有较多方法需要权限控制时:可使用权限控制中间件,permissionMiddleWare 在只有少量方...

  • Java基础学习六 关键字

    java语言中的访问控制权限修饰符 访问控制权限修饰来控制元素的访问范围。 访问控制权限修饰符包括:public ...

  • RBAC权限模型简介

    一、前言 权限一句话来理解就是对资源的控制,对web应用来说就是对url的控制,关于权限可以毫不客气的说几乎每个系...

网友评论

    本文标题:关于vue-admin-template的权限控制改造

    本文链接:https://www.haomeiwen.com/subject/ikcizktx.html