elementui权限管理,element ui按钮权限控制

  elementui权限管理,element ui按钮权限控制

  在一个业务管理系统中,如果需要实现权限控制功能,需要定义相应的权限功能点,然后在界面中绑定界面元素的功能点,这样就可以在后台动态分配权限进行动态控制。权限功能点由角色控制,简称RBAC。

  

目录

  概述1。权限功能点管理2。VUE元素前端权限控制

  

概述

  本文介绍了功能点管理和权限控制。功能点作为业务对象数据进行管理,并在角色类别中进行分配。在界面元素的控制上,Vue自定义指令指令被引入到VUE元素的前端进行控制。

  

1、权限功能点管理

  我们之前已经分析了权限系统的表和关系的描述,如下所示。

  权限点的管理就是TB_Function表的管理,也就是我们为系统控制定义的功能点。

  功能点的管理包括树形列表管理和展现其树形结果的明细表管理,如下图所示。

  功能点的查看界面如下图所示。除了显示相应功能点的详细信息外,还列出了哪些角色拥有和使用该功能点。

  一个功能点的新建界面如下图所示,主要是选择父节点,输入功能点的信息。

  为了方便批量录入权限功能节点,我们可以基于业务表进行批量录入,如下图所示。

  这样添加客户信息的功能点名称会自动变成:Customer/Add,其他类似,这样就可以快速添加该业务表的相关功能点。

  有了这些功能点的定义,我们就可以结合角色管理把它们分配给不同的角色。在角色编辑界面,为角色分配不同的权限控制点,如下所示。

  

2、VUE+Element 前端权限控制

  前面的内容介绍了权限功能点的管理和基于角色的权限分配处理,都是为界面元素的前端权限控制做准备。

  首先我们需要按照ABP后端的接口封装前端JS类。如前所述,GET/GET ALL/CREATE/UPDATE/DELETE/COUNT等常规接口都是在BaseApi基类中定义的,其他子类可以继承。

  该模块涉及用户管理、组织管理、角色管理、菜单管理、功能管理、审计日志、登录日志等业务类。然后这些类继承了BaseApi,并且会有相关的接口,如下面的继承关系所示。

  因为与用户相关的菜单和权限集都在用户类别中,所以我们可以在UserApi中定义相应的后端接口调用。

  GetGrantedFunctionsByUser方法是获取指定用户的权限功能点集的函数。

  UserApi的类文件user.js的内容如下。

  GetGrantedFunctionsByUser方法是获取指定用户的权限功能点集的函数。功能代码如下所示。

  GetGrantfunctionsbyuser(id){//获取用户权限列表。

  退货请求({

  URL:this . baseurl GetGrantedFunctionsByUser ,

  方法:“get”,

  参数:{ id }

  })

  }

  在用户的Store/Modules/user.js中,我们添加了一个功能点的状态信息,如下图所示。

  然后在用户每次获取信息时,存储其功能点信息,这样界面就可以根据存储的内容控制相应的权限。

  添加一个函数来设置突变中的用户状态信息,如下所示。

  SET _ permissions:(state,permissions)={

  州许可证=许可证

  }

  这样,在用户信息获取的getInfo函数中,我们可以顺便一起获取用户的权限功能点的信息集合。

  //获取用户信息

  getInfo({ commit,state }) {

  返回新承诺((解决,拒绝)={

  user.getInfo(state.userid)。然后(response={

  常数{结果}=响应

  ...

  提交( SET_ROLES ,{ roles,roleNames })

  提交(集合名称,名称)

  提交( SET_INTRODUCTION ,全名)

  //获取用户权限

  用户。GetGrantedFunctionsByUser(state . userid)。然后(data={

  var list=data.result.items

  如果(列表){

  var许可=[]

  list.forEach(element={

  if(element element . name type of(element . name)!==未定义){

  permiss . push(element . name . to lower case())//小写

  }

  });

  //设置用户功能权限点

  提交( SET _ permissions ,permissions)

  }

  })

  解决(结果)

  }).catch(错误={

  拒绝(错误)

  })

  })

  },

  现在前端也有了这些权限功能点控件集,这些是当前登录用户对应的可访问权限集。

  下一步就是根据这些权限集来控制界面元素,比如一些操作按钮,比如添加、编辑、删除、导入、导出等等,是否可以显示和管理。

  该操作是为Vue设计的自定义指令操作。如果你不知道自定义指令的用法,请参考官方介绍:https://cn.vuejs.org/v2/guide/custom-directive.html.

  如果我们定义了一个v-permit的自定义指令来处理权限功能点的绑定,那么接口应该是这样处理的。

  El-row style= float:right;底部填充:10px

  El-button icon= El-icon-search type= primary size= mini round @ click= search()查询/el-button

  El-button icon= El-icon-refresh-left type= warning size= mini round plain @ click= resetseachform( search form ) reset/El-button

  El-button v-permit=[ user/add ] icon= El-icon-plus type= success size= mini round @ click= showadd() add/El-button

  El-button v-permit=[ user/import ] icon= El-icon-upload 2 type= warning size= mini round @ click= show import() import/El-button

  El-button v-permit=[ user/export ] icon= El-icon-download type= warning size= mini round @ click= show import() export/El-button

  /el-row

  通过类似v-permit=[User/add]的操作,可以指定该操作按钮的功能点。如果用户有这些功能点,就可以使用,否则不显示。

  我们在指令目录下定义了一个permit.js的自定义指令文件,用于相应的处理。

  然后在index.js的发布文件中定义加载处理逻辑,如下面的代码所示

  从进口许可证。/许可证

  const install=function(Vue) {

  Vue.directive(许可证,允许)

  }

  如果(窗口。Vue) {

  窗口[许可证]=许可证

  //eslint-disable-next-line no-undef

  Vue.use(安装)

  }

  permission.install=安装

  导出默认权限

  最后,在main.js中全局加载自定义指令的操作如下面的代码所示。

  //全局引入和使用权限控制点的自定义指令。

  从导入权限。/指令/权限

  Vue.use(权限)

  有了store模块中的状态信息和自定义命令的支持,就可以使用这些权限点来控制界面上相应的按钮元素。

  以上是Vue元素前端应用开发的功能点管理和权限控制的详细内容。更多关于Vue的信息,请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: