vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue element-admin权限控制之按钮

Vue element-admin权限控制之按钮使用

作者:青衣画白扇

这篇文章主要介绍了Vue element-admin权限控制之按钮使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Vue element-admin权限控制之按钮

在项目中一般的权限控制都是精确到按钮的分配,那么在 elemen-admin中如何实现这一操作呢

第一步

需要创建 hasPermi.js 当然名称可以自定义这个js文件是做权限的匹配的

 /**
 * v-hasPermi 操作权限处理
 */

import store from '@/store'

 function checkPermission(el, binding) {
   const { value } = binding
   //通用权限测试用的偷懒的写法
   const all_permission = "*:*:*"; //此处定义的是权限的 格式:'system:sysUser:edit'
   const roles = store.getters && store.getters.permissions
   if (value && value instanceof Array) {
     if (value.length > 0) {
       const permissionRoles = value
       const hasPermission = roles.some(role => {
       	//这里如果是包含 或者 是上面的通配符号就放行显示(当然 生产环境是不能加这个通配符的)
         return all_permission === role || permissionRoles.includes(role)
       })

       if (!hasPermission) {
         el.parentNode && el.parentNode.removeChild(el)
       }
     }
   } else {
     throw new Error(`need roles! Like v-permission="['admin','editor']"`)
   }
 }

 export default {
 	//被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于 document 中)。
   inserted(el, binding) {
     checkPermission(el, binding)
   },
   // 被绑定元素所在的模板更新时调用,而不论绑定值是否变化
   update(el, binding) {
     checkPermission(el, binding)
   }
 }

第二步

在创建一个index.js 来在Vue 中全局使用

import permission from './hasPermi'
const install = function(Vue) {
  Vue.directive('permission', permission)
}
/**
 * 按钮权限
 */
if (window.Vue) {
  window['permission'] = permission
  Vue.use(install); // eslint-disable-line
}

permission.install = install
export default permission

最后看看页面怎么使用 没错 优雅的使用 v-permission

<template slot-scope="scope">
          <el-button type="text" size="small"
                     icon="el-icon-edit"
                     v-permission="['system:sysUser:edit']"
                     @click="updateInfo(scope.row)">修改</el-button>
</template>

效果 : 当用户权限不包含 system:sysUser:edit时 修改按钮隐藏

包含时就会显示出来

注:最好后端的接口请求上面加上权限再一次校验,防止后端已经更新用户权限,前端没有刷新导致没有生效。可以靠率 aop 加注解的模式 这里就不多说了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

您可能感兴趣的文章:
阅读全文