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/cli4升级@vue/cli5 node.js polyfills错误的解决方式
最近在升级vue/cli的具有了一些问题,解决问题的过程也花费了些时间,所以下面这篇文章主要给大家介绍了关于@vue/cli4升级@vue/cli5 node.js polyfills错误的解决方式,需要的朋友可以参考下2022-09-09
Vue2路由地址栏变化API(pushState和replaceState)的避坑指南
你是不是也遇到过这种尴尬场景:明明URL变了,页面却没刷新?或者一刷新直接404教做人?别慌,这都是history.pushState和replaceState在搞事情,因此本文给大家介绍了Vue2路由地址栏变化API的避坑指南,需要的朋友可以参考下2026-02-02
Vue组件化(ref,props, mixin,.插件)详解
这篇文章主要介绍了Vue组件化(ref, props, mixin, 插件)的相关知识,包括ref属性,props配置项及mixin混入的方式,本文通过示例代码多种方式相结合给大家介绍的非常详细,需要的朋友可以参考下2022-05-05
vue基于html2canvas和jspdf 生成pdf 、解决jspdf中文乱码问题的方法详解
这篇文章主要介绍了vue基于html2canvas和jspdf 生成pdf 、解决jspdf中文乱码问题的方法,结合实例形式详细描述了中文乱码问题的原因、解决方法与相关注意事项,需要的朋友可以参考下2023-06-06


最新评论