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

 更新时间:2025年04月06日 11:23:50   作者:青衣画白扇  
这篇文章主要介绍了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 加注解的模式 这里就不多说了

总结

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

相关文章

  • 给vue项目添加ESLint的详细步骤

    给vue项目添加ESLint的详细步骤

    本篇文章主要介绍了给vue项目添加ESLint的详细步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 前端vue2使用国密SM4进行加密、解密具体方法

    前端vue2使用国密SM4进行加密、解密具体方法

    SM4是一种对称加密算法,类似于AES,主要用于数据的批量加密,如文件加密、数据库加密、网络通信数据加密等,这篇文章主要给大家介绍了关于前端vue2使用国密SM4进行加密、解密的相关资料,需要的朋友可以参考下
    2024-07-07
  • vue3动态修改打包后的请求路径的操作代码

    vue3动态修改打包后的请求路径的操作代码

    这篇文章主要介绍了vue3动态修改打包后的请求路径,需要我们创建一个静态资源里的外部文件来实现,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • @vue/cli4升级@vue/cli5 node.js polyfills错误的解决方式

    @vue/cli4升级@vue/cli5 node.js polyfills错误的解决方式

    最近在升级vue/cli的具有了一些问题,解决问题的过程也花费了些时间,所以下面这篇文章主要给大家介绍了关于@vue/cli4升级@vue/cli5 node.js polyfills错误的解决方式,需要的朋友可以参考下
    2022-09-09
  • Vue2路由地址栏变化API(pushState和replaceState)的避坑指南

    Vue2路由地址栏变化API(pushState和replaceState)的避坑指南

    你是不是也遇到过这种尴尬场景:明明URL变了,页面却没刷新?或者一刷新直接404教做人?别慌,这都是history.pushState和replaceState在搞事情,因此本文给大家介绍了Vue2路由地址栏变化API的避坑指南,需要的朋友可以参考下
    2026-02-02
  • element日期组件实现只能选择小时或分钟

    element日期组件实现只能选择小时或分钟

    本文主要介绍了element日期组件实现只能选择小时或分钟,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Vue组件化(ref,props, mixin,.插件)详解

    Vue组件化(ref,props, mixin,.插件)详解

    这篇文章主要介绍了Vue组件化(ref, props, mixin, 插件)的相关知识,包括ref属性,props配置项及mixin混入的方式,本文通过示例代码多种方式相结合给大家介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • Vue3如何按照某个字段将数组分成多个数组

    Vue3如何按照某个字段将数组分成多个数组

    这篇文章主要介绍了Vue3如何按照某个字段将数组分成多个数组的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07
  • Vue子组件调用父组件的三种方法(附详细代码演示)

    Vue子组件调用父组件的三种方法(附详细代码演示)

    我们在使用vue做前端代码的时候,经常出现父组件调用子组件的场景需求,这篇文章主要介绍了Vue子组件调用父组件的三种方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-07-07
  • vue基于html2canvas和jspdf 生成pdf 、解决jspdf中文乱码问题的方法详解

    vue基于html2canvas和jspdf 生成pdf 、解决jspdf中文乱码问题的方法详解

    这篇文章主要介绍了vue基于html2canvas和jspdf 生成pdf 、解决jspdf中文乱码问题的方法,结合实例形式详细描述了中文乱码问题的原因、解决方法与相关注意事项,需要的朋友可以参考下
    2023-06-06

最新评论