Vue自定义指令校验按钮权限

目标

在类似运营平台的项目中,经常会有一些操作按钮需要校验当前登录的用户是否有权限访问。然而在每一个按钮上都加 v-if 判断非常的繁琐和冗余,为此可以通过自定义指令的方式来处理按钮权限

实现方案

在main.js全局添加自定义指令
// 权限列表,此处为mock,正式应根据登录人的身份从后端获取
const permissionList = ['productAdd', 'productDelete', 'productEdit'];const app = createApp(App);
// 自定义权限校验指令
app.directive('permission', {mounted: function (el, binding) {// 获取绑定的权限值const permission = binding.value;// 进行权限判断,如果权限列表中不包含传入的权限值,进行拦截if (!permissionList.includes(permission)) {// 方法一:移除页面没有权限的按钮el.parentNode && el.parentNode.removeChild(el);// 方法二:显示操作按钮,点击弹出拦截提示const cloneEl = el.cloneNode(true); // 克隆一个新节点,替换原有的点击事件,将点击事件改为无权限提示cloneEl.addEventListener("click", function () {alert("没有该操作权限,请联系系统管理员!");});el.parentNode && el.parentNode.replaceChild(cloneEl, el); // 替换掉原来绑定事件的节点}}
});

如果是vue2,将mounted改为inserted即可

// Vue2
Vue.directive('permission', {inserted: function (el, binding) {// ...}
});
在业务组件中添加 v-permission
// 有权限,可以正常触发click方法
<button @click="addProduct" v-permission="'productAdd'">新增商品</button>// 无权限,click方法被替换,点击报:“没有该操作权限,请联系系统管理员!”
<button @click="addUser" v-permission="'userAdd'">新增用户</button>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/654313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PowerBI商业智能分析引入,带你了解什么是商务智能

一、商务智能工具 什么是Power BI &#xff1f;Power Bl是微软开发的一个软件&#xff0c;它是从获取数据、数据清洗、数据图表搭建、数据分析、共享发布为一体的软件&#xff0c;无论你的数据是简单的Excel电子表格&#xff0c;还是复杂庞大的数据库&#xff0c;Power Bl都可…

智慧文旅:提升旅游体验与推动经济发展的新动力

一、智慧文旅的定义与意义 智慧文旅&#xff0c;即智慧文化旅游&#xff0c;是一种以当地特色文化元素为核心驱动&#xff0c;利用现代科技手段实现旅游景区全面智慧升级的旅游模式。其意义在于为游客提供高效便捷的旅游信息化服务&#xff0c;提升旅游体验&#xff0c;同时推…

使用 OpenAI 自定义 API 提高电商平台的推荐精度

使用 OpenAI 自定义 API 提高电商平台的推荐精度 一、引言 随着人工智能技术的不断发展&#xff0c;推荐系统在电商领域的应用越来越广泛。电商平台通过推荐系统向用户提供个性化的商品推荐&#xff0c;从而提高用户满意度和转化率。OpenAI 提供了自定义 API&#xff0c;使得…

用vue写表格实现数量的加减

可以使用Vue的v-model和计算属性来实现表格中数量的加减功能。 首先&#xff0c;在Vue实例中定义一个数组items&#xff0c;数组中包含多个对象&#xff0c;每个对象代表表格中的一行数据&#xff0c;包含一个quantity属性来表示数量。例如&#xff1a; new Vue({el: #app,da…

Go语言基础之单元测试

1.go test工具 Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的&#xff0c;并不需要学习新的语法、规则或工具。 go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内&#xff0c;所有以_test.go为后缀名的源代码文件都是go …

【Linux】Linux权限的概念 -- 详解

一、Linux 中的用户 Linux 下有两种用户&#xff1a; 超级用户&#xff08;root&#xff09;&#xff1a;可以在 Linux 系统下做任何事情&#xff0c;不受限制。普通用户&#xff1a;在 Linux 下做有限的事情。 超级用户的命令提示符是 “#”&#xff0c;普通用户的命令提示符…

解读BEVFormer,新一代自动驾驶视觉工作的基石

文章出处 BEVFormer这篇文章很有划时代的意义&#xff0c;改变了许多视觉领域工作的pipeline[2203.17270] BEVFormer: Learning Birds-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers (arxiv.org)https://arxiv.org/abs/2203.17270 BEV …

ESP8266 控制之 : 使用 RingBuffer USART1 和 USART3互传

简介 使用Buffer来避免数据的丢失, 或许你自己在使用串口进行收发时会丢失数据, 现在我们就来简单使用一下RingBuffer创建Rx、Tx的Buffer来避免发送接收丢包或数据丢失问题。 扩展知识 RingBuffer的介绍, 看完大概也就知道了&#xff0c;实在不知道就看看下面的代码 线路连接…

实习记录——第五天

今天我的心情不是很美丽&#xff0c;昨天晚上没怎么睡好&#xff0c;因为我一直在想离不离开实验室&#xff1f;该怎么说的事情&#xff1f;但是又觉得这个项目还没有完全结束&#xff0c;冒昧提这个事情是不是不好&#xff1f;最终也没得出一个结论&#xff0c;晚上睡得也不踏…

Redis++源码学习1

为了更好使用Redis库&#xff0c;分析了源码&#xff0c;了解了命令的发送过程及连接池管理细节等。草草做了笔记留存。 创建ConnectionOptions 创建ConnectionPoolOptions 创建redis(ConnectionOptions, ConnectionPoolOptions) 执行redis.auth() 调用Redis::command 模板函…

使用antdesign3.0、echarts制作固定资产后台管理系统原型

学了半个月Axure,周末用半天时间&#xff0c;照着网上的模板做了一个固定资产后台管理系统的原型。重点是内联框架的使用&#xff0c;和对echarts表格js代码的调试。原型链接&#xff1a;https://qoz5rv.axshare.com 资产管理系统

代码随想录算法训练61 | 总结篇

前面60天的刷题大概是按照如下类型来刷&#xff1a;数组-> 链表-> 哈希表->字符串->栈与队列->树->回溯->贪心->动态规划->单调栈。每道题目都是精心筛选&#xff0c;都是经典题目高频面试题。并且&#xff0c;每个专题开始都有理论基础篇&#xff…

gitignore规则

在使用Git的过程中&#xff0c;我们喜欢有的文件比如日志&#xff0c;临时文件&#xff0c;编译的中间文件等不要提交到代码仓库&#xff0c;这时就要设置相应的忽略规则&#xff0c;来忽略这些文件的提交。 Git 忽略文件提交的方法 有三种方法可以实现忽略Git中不想提交的文…

SD NAND的CLK引脚的注意事项和走线规范

CLK的作用和注意事项 SD NAND的时钟引脚&#xff08;CLK&#xff09;的作用是提供一个时钟信号&#xff0c;用于同步数据传输。时钟信号是由主设备&#xff08;如微控制器或存储控制器&#xff09;提供的&#xff0c;用于确保SD NAND和主设备之间的数据交换是按照相同的时序进…

AcWing--因数平方和-->数论,整数分块

4662. 因数平方和 - AcWing题库&#xff08;python) # 输入 n int(input()) mod int(1e9 7) # 求平方和 def square_sum(n): return n * (n 1) * (2 * n 1) // 6 % mod # 结果 res 0 i1 while(i<n): # 找到开始跟结尾 x n // i y n // x res (res …

SQL Server我用TRUNCATE TABLE 表名称 清除表,没有释放空间,怎么才能把我刚才TRUNCATE TABLE 清表的空间给释放掉

在 SQL Server 中&#xff0c;当你使用 TRUNCATE TABLE 命令时&#xff0c;它确实会删除表中的所有数据&#xff0c;但不会回收空间。这是因为 TRUNCATE 操作保留了表的结构、索引、触发器等&#xff0c;而仅仅删除数据页。 如果你想释放由 TRUNCATE 操作保留的空间&#xff0…

力扣hot100 子集 回溯 超简洁

Problem: 78. 子集 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 参考题解 复杂度 时间复杂度: 添加时间复杂度, 示例&#xff1a; O ( n ) O(n) O(n) 空间复杂度: 添加空间复杂度, 示例&#xff1a; O ( n ) O(n) O(n) Code class Solution {List<Li…

SpringBoot 相关概念

文章目录 SpringBoot事务的使用Spring Boot 有哪几种读取配置的方式&#xff1f;SpringBoot的自动配置原理是什么bootstrap.properties 和 application.properties 有何区别 ?什么是 Spring Profiles&#xff1f;Spring Boot 中如何解决跨域问题 ?SpringBoot性能如何优化实现…

MYSQL源码安装并且添加系统服务脚本SHELL编程实战LNMP源码部署脚本

MYSQL源码安装&并且添加系统服务脚本&SHELL编程实战LNMP源码部署脚本 1、编写MYSQL源码安装&并且添加系统服务脚本 mysql_yuanma_install_v2.sh #!/bin/bash #2024年01月25日21:05:03 #auto install mysql #by author lqc ##################################…

第四讲_JavaScript函数

JavaScript函数 1. 函数的概述2. 无参函数3. 带参函数4. 匿名函数4.1 匿名表达式4.2 立即执行函数4.2.1 立即执行函数写法一4.2.2 立即执行函数写法二 5. 闭包6. 箭头函数7. 函数this指定 1. 函数的概述 JavaScript 函数是被设计为执行特定任务的代码块。JavaScript 函数通过 …