iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue权限指令控制权限详解
  • 404
分享到

Vue权限指令控制权限详解

2024-04-02 19:04:59 404人浏览 薄情痞子
摘要

目录第一种-自定义权限指令第二种:v-if自定义控制最后说明在日常的开发过程中,我们除了使用Vue已有的指令之外,还需自定义指令,需要对DOM节点进一步操作。 在后台系统中,最常用的

在日常的开发过程中,我们除了使用Vue已有的指令之外,还需自定义指令,需要对DOM节点进一步操作。

在后台系统中,最常用的就是权限指令。

权限控制的原理就是在系统当前界面初始化时,判断某些DOM节点有没有权限,没有则移除此DOM。

在Vue中使用指令权限时,通常有两种控制节点的方法。第一个是对普通节点的指令控制(普通节点即是指 html 中的标签节点。),第二个则是对elementUI组件的控制。

为什么分两种呢?是因为在实际开发过程中,我发现自定义指令有时候无法移除element中的组件,例如:在使用el-tab时,下面包含了多个tab页,当某个tab页无权限访问时 想要对其进行移除,这时候自定义的指令只能移除此tab页内的内容,并不能够将此tab页一起移除。所以这时候会使用v-if进行控制。

第一种-自定义权限指令

我的写法是新建permission文件夹,此文件夹下面包含index.js、permission.js,接下来直接上代码:

index.js

import permission from './permission'
import Vue from 'vue'
Vue.directive('permission', permission)

permission.js

import store from '@/store'
async function checkPermission(el, binding) {
	const { value } = binding
	const roles = await store.getters && store.getters.permission
	if( value && value instanceof Array) {
		if( value.length > 0) {
			const permissionRoles = value
			const hasPermission = roles.some(role => {
				return permissionRoles.includes(role)
			})
			if(!hasPermission) {
				el.parentnode && el.parentNode.removeChild(el)
			}
		}
	}else {
		throw new Error('需要以数组的形式传角色')
	}
}
export default {
	inserted(el, binding) {
		checkPermission(el, binding)
	},
	update(el, binding) {
		checkPermission(el, binding)
	}
}

在这里面需要解释的是权限列表的获取,我的权限列表是存储在store的permission中,所以在进入的时候直接获取permission。

最重要的一步,需要将index.js引入到main.js中去执行。

main.js

import './permission' // 此引入需要在创建Vue实例之前引用

用法:

<el-button v-permission="['add']">权限按钮</el-button>

第二种:v-if自定义控制

如果使用第一种方式的话,其是移除当前DOM下的子节点,是没办法移除当前节点的。所以这时候就需要通过自定义的v-if来控制。

思路:v-if中执行一个函数,函数传入一个权限值。在函数中判断权限值是否属于权限菜单内,返回布尔类型值。

这时我们想到,如果要定义一个函数在任何组件中都可以使用,那么要么是工具类函数,要么是mixins。如果是封装工具类函数,则没办法直接在模板中使用,而是需要在methods中使用,所以我们直接选择mixins,混入方法。

我们创建控制节点的文件controlnode.js

import store from "@/store"
export default {
	methods: {
		controlNode(node) {
			const permission = store.getters.permission
			let result = permission.includes(node)
			return result
		}
	}
}

用法:

在组件中使用mixins

<template>
<div>
	<el-tabs>
		<el-tab-pane v-if="controlNode('add')"></el-tab-pane>
		<el-tab-pane></el-tab-pane>
	</el-tabs>
</div>
</template>
<script>
import controlNode from "@/permission/controlNode"
export default {
	name: "component",
	mixins: [controlNode]
}
</script>

最后说明

为什么控制节点权限要分两种情况?同样都是移除节点,为什么还要用v-if?

如果你仔细观察代码,在第一种方式中,我们移除的是 child,是将当前节点的子元素进行移除,此时当前节点依然存在。所以就出现了所分的两种情况。

那有没有办法用自定义的指令就可以完成移除呢?那当然是有的,在第一种方式中,只需要将removeChild改为remove即可。即将移除子元素改为移除当前节点本身。

到此这篇关于Vue权限指令控制权限详解的文章就介绍到这了,更多相关Vue权限指令内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue权限指令控制权限详解

本文链接: https://www.lsjlt.com/news/168403.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue权限指令控制权限详解
    目录第一种-自定义权限指令第二种:v-if自定义控制最后说明在日常的开发过程中,我们除了使用Vue已有的指令之外,还需自定义指令,需要对DOM节点进一步操作。 在后台系统中,最常用的...
    99+
    2022-11-13
  • MySQL 权限控制详解
    mysql权限控制     作为一名DBA,想必大家对MySQL中的权限都不陌生,MySQL中对于权限的控制分为三个层面: 全局性的管理权限,作用于整个MySQL实例级别 数...
    99+
    2022-05-12
    MySQL 权限 MySQL 权限控制
  • Android权限控制之自定义权限
    天哪,这篇文章终于说道如何自定义权限了,左盼右盼,其实这个自定义权限相当easy。为了方便叙述,我这边会用到两个app作为例子示范。 Permission App: used ...
    99+
    2022-06-06
    自定义 Android
  • kafkatopic权限控制(设置删除权限)
    Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。...
    99+
    2022-11-12
  • SpringSecurity权限控制
    目录 1、Spring Security简介 2、Spring Security实现权限 2.1、Spring Security入门 2.1.1、修改pom文件 2.1.2、添加配置类 2.2、用户认证 2.2.1、自定义组件 2.2.2、...
    99+
    2023-09-05
    spring java 后端
  • 关于linux权限s权限和t权限详解
    常用权限 linux系统内有档案有三种身份 u:拥有者  g:群组   o:其他人 这些身份对于文档常用的有下面权限: r:读权限,用户可以读取文档的内容,如用cat,more查看 w:写权...
    99+
    2022-06-04
    linux权限 s权限 t权限
  • vue按钮权限控制介绍
    目录一、步骤 1.定义buttom权限 2.定义store 3.创建permission指令 4.使用permission指令 5.删除无权限数据 6.传入状态管理数据 二、概况 前...
    99+
    2022-11-12
  • MongoDB权限控制(6)
    权限概述 在mongodb里面的用户是属于数据库的,每个数据库有自己的管理员,管理员登录后,只能操作所属的数据库。 注意:一般在admin数据库中创建的用户授予超级管理员权限,登录后可以操作任何的数据库。 创建超级管理员 注意:...
    99+
    2016-01-23
    MongoDB权限控制(6)
  • SpringBoot详解shiro过滤器与权限控制
    目录shiro过滤器权限控制动态配置权限shiro过滤器 首先从客户端发来的所有请求都经过Shiro过滤器,如果用户没有认证的都打回去进行认证,认证成功的,再判断是否具有访问某类资源...
    99+
    2022-11-13
  • MongoDB 3.0+安全权限访问控制详解
    1、启动没有访问控制的MongoDB服务 sudo service mongod start 2、连接到实例 mongo --port 27017 指定额外的命令行选项来连接Mongo shell到部...
    99+
    2022-10-18
  • vue-router如何实现权限控制
    这篇文章主要讲解了“vue-router如何实现权限控制”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue-router如何实现权限控制”吧!在vue-router控制前端权限是常见需求:...
    99+
    2023-07-04
  • 基于Vue自定义指令如何实现按钮级权限控制
    这篇文章将为大家详细讲解有关基于Vue自定义指令如何实现按钮级权限控制,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。思路:登录:当用户填写完账号和密码后向服务端验证是否正...
    99+
    2022-10-19
  • 管理控制台权限控制
    本文讨论一种常见的权限控制方式: 权限管理使用分层思想:一共分四层   1.菜单/页面/按钮授权 系统用户对菜单/页面/按钮的可见性(不可见不代表不能访问接口) 2.接口(功能)授权 系统用户对接口的是否有...
    99+
    2014-05-12
    管理控制台权限控制
  • Android权限管理之Permission权限机制及使用详解
    前言: 最近突然喜欢上一句诗:“宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒。” 哈哈~,这个和今天的主题无关,最近只要不学习总觉得生活中少了点什么,所以想着围绕着最近...
    99+
    2022-06-06
    Android
  • linux权限详解
    文章目录 1.用户转换1.将普通用户转换成root1.su -2. su 2.将root转换为普通用户 2.文件的权限1.文件访问者的分类拥有者和other所属组 2.rwx的...
    99+
    2023-09-23
    linux 服务器 运维
  • MySQ权限控制语句
    1.使用root账号登陆到MySQL服务器: mysql -u root -pmypass; 2.切换到mysql数据库实例: use mysql; 3.查看用户表: select host, user, passwor...
    99+
    2021-01-27
    MySQ权限控制语句
  • vue按钮怎么实现权限控制
    这篇文章主要讲解了“vue按钮怎么实现权限控制”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue按钮怎么实现权限控制”吧!一、步骤1.定义buttom权限在state中创建buttomPe...
    99+
    2023-06-22
  • vue如何实现路由权限控制
    这篇“vue如何实现路由权限控制”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue如何实现路由权限控制”文章吧。在Vue中...
    99+
    2023-07-06
  • 详解vue各种权限控制与管理的实现思路
    本篇文章给大家带来了关于vue的相关知识,其中主要详细介绍了vue各种权限控制与管理的实现思路,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。一、 菜单权限菜单权限:控制用户在系统中能够看到哪些菜单项菜单权限指的就是后台系统中的左侧的菜...
    99+
    2023-05-14
    前端 Vue.js Vuex
  • vue3 自定义指令控制按钮权限的操作代码
    经过1个周的摸索和查阅资料,终于搞定VUE3中自定义指令,实现按钮级别的权限控制。当然,只是简单的对按钮进行隐藏和删除的dom操作比较容易,一直纠结的是当按钮无权限时,不是直接删除当...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作