基于RBAC的权限管理的理论实现和权限管理的实现

权限管理的理论

首先需要两个页面支持,分别是角色管理和员工管理,其中角色管理对应的是角色和权限的配合,员工管理则是将登录的员工账号和员工所处的角色进行对应,即通过新增角色这个概念,让权限和员工并不直接关联,而是通过分别和角色进行关联从而实现给员工分配权限。

菜单和按钮的权限管理

菜单的权限控制

通过对后台返回的数据进行vuex中的存储,然后将权限与路由中的动态规则进行比对,筛选出对应的动态规则,然后将这些规则与静态规则合并,从而实现路由的权限控制,然后通过将完整的路由规则存入到vuex中,在菜单的展示界面渲染vuex中存储的完整的路由规则,来实现界面上我们看到的菜单的权限控制。

这里有几个细节,我们在获取用户权限的时候有两个时机可以选择,一个是用户登录时,另一个是路由的beforeEach时,考虑到更好的时效性(更容易得到修改权限后,用户展示的菜单和按钮权限在界面上立即可以看到),我们选择在beforeEach的时候请求这个接口。

还有就是我们在拆分权限的时候,将其拆分成一级路由对应的权限以及二级路由对应的权限,这里面用到了数组去重的Array.from(new Set(某个数组)) 这样的操作。然后我们根据去重后的结果,使用一级的权限去筛选符合条件的动态路由,然后用二级的权限去筛选被筛选过的动态路由,从而得到我们要的路由。

这里获取二级的权限的时候的字符串拼接,是写成return `${arr[0]}:${arr[1]}`,即中间还有一个:,这个是和我们设计的动态路由的permission字段相对应的。我们的二级路由也是写成xx:yy这样的形式。

这里就是我们最终得到动态路由的地方,其中需要注意的就是我们的路由规则应该是完整的,所以我们最后return的是return {...item,children:(){}},即我们将item返回了,我们只修改了符合我们要求的children,这个写法很聪明。

然后就是动态添加路由规则,用的方法是router.addRoute(),完整写法是routes.forEach(item=>router.addRoute(item))

上面这种是添加到路由规则中,还需要我们对菜单进行调整

通过在vuex中进行响应式数据的设置,然后替换掉菜单的数据获取,从而实现菜单的响应式数据展示。

按钮的权限控制

通常常用的是通过vue的全局指令vue.directive('指令名',{

//钩子函数

bind(el,binding){},

inserted(el,binding){

//代码内容

}

})

按钮的权限控制,除了需要返回的权限以外,还需要后台返回一个全部的按钮权限。然后我们通过全局指令来对按钮进行操作,使得登录用户具有权限的按钮能够展示,这个一般是可以通过全局指令的钩子函数中的el.remove()来进行元素的移除。

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

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

相关文章

Unity求物体关于平面镜像对称后坐标以及旋转

前言:如题,我在已知一个平面L和物体A,我希望得到镜像后的物体B的位置和旋转。 效果: 推导: 首先我们需要知道物体的对称坐标A,我们现在能已知A坐标以及平面L的法线,如果我们能得到B的坐标&…

【后端高频面试题--Linux篇】

🚀 作者 :“码上有前” 🚀 文章简介 :后端高频面试题 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 后端高频面试题--Linux篇 往期精彩内容Windows和Linux的区别?Unix和Linux有什么区别…

利用nbsp设置空格

想要实现上面效果&#xff0c;一开始直接<el-col :span"8" >{{ item.name }} </el-col> 或者<el-col :span"8" >{{ item.name }}</el-col>或者<el-col :span"8" >{{ item.name }}</el-col> 都无…

生产力工具——JNPF开发平台

风流数年&#xff0c;只看今朝&#xff0c;Linux 让我们看到了开源驱动下的生产力&#xff0c;其实低代码和它一样&#xff0c;都是提高效率、降低成本的工具。 近 10 年间&#xff0c;JNPF 低代码平台如火如荼的发展起来&#xff0c;堪称黑马也不为过。这款广受好评的低代码平…

数据结构---字典树(Tire)

字典树是一种能够快速插入和查询字符串的多叉树结构&#xff0c;节点的编号各不相同&#xff0c;根节点编号为0 Trie树&#xff0c;即字典树&#xff0c;又称单词查找树或键树&#xff0c;是一种树形结构&#xff0c;是一种哈希树的变种。 核心思想也是通过空间来换取时间上的…

【Kotlin】Kotlin流程控制

1 选择结构 Kotlin 中选择结构主要包含 if -else、when 语句&#xff0c;并且可以返回结果。 1.1 if-else 1.1. 条件选择 fun main() {var score 85if (score > 90) {println("优秀")} else if (score > 80) {println("良好")} else if (score &…

Linux---守护进程

运行的这个进程&#xff0c;它的pid和gpid(进程组ID)一样&#xff0c;它是自成一组的。 这就是一个进程组。 进程组和任务有什么关系&#xff1f; 将任务指派给进程组。任务都是由进程组去完成的。 可以发现&#xff0c;这三个进程的会话id1351都是一样的&#xff0c;多个任…

动态内存管理(中)

动态内存管理&#xff08;上&#xff09;-CSDN博客&#xff08;malloc&#xff0c; realloc&#xff0c; calloc&#xff0c; free函数的用法以及注意事项等知识点&#xff09; 目录 1.对空指针的解引用操作 2.对动态开辟空间的越界访问 3.对非动态内存开辟空间使用free空间…

服务器遭受 DDoS 攻击的常见迹象有哪些?

服务器遭受 DDoS 攻击的现象很常见&#xff0c;并且有时不容易预防&#xff0c;有部分原因是它们的形式多种多样&#xff0c;而且黑客手段越来越隐蔽。如果您怀疑自己可能遭受 DDoS 攻击&#xff0c;可以寻找多种迹象。以下是 DDoS 攻击的5个常见迹象&#xff1a; 1.网络流量无…

力扣OJ题——相交链表

题目&#xff1a;160. 相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 思路一&#xff08;暴力求解&#xff09;&#xff1a; A链表的每个节点依次跟B链表中节点进行…

python-pyqt5-工具按钮(QToolButton)添加菜单(QMenu)

QToolButton提供了比普通按钮更丰富的功能。它可以显示一个图标、一个文本或二者结合&#xff0c;还支持各种样式和行为&#xff0c;例如弹出菜单或多种动作模式 样式 setToolButtonStyle(Qt.ToolButtonStyle) # 设置按钮样式风格# 参数Qt.ToolButtonIconOnly …

芋道-------如何实现工作流退回后重新提交到之前退回的节点

一、概述 上一节&#xff0c;我们讲过了工作流如何退回到申请人&#xff0c;接下来我们来讲一讲&#xff0c;如何重新提交。这里重新提交可以是再走一遍正常流程&#xff0c;同时也可以是直接跳过中间的步骤&#xff0c;直接继续给上一步退回的人审批。文章中会提及这两种情况。…

全面解读视频生成模型Sora

2024年2月15日&#xff0c;OpenAI在其官网发布了《Video generation models as world simulators》的报告&#xff0c;该报告提出了作为世界模拟器的视频生成模型Sora。 OpenAI对Sora介绍如下&#xff1a; We explore large-scale training of generative models on video dat…

echarts制作两个柱状图

let colorList[#02ce8b,#ffbe62,#f17373]; let data1 [90,80,70,50] option { title:[{ // 第一个标题text: 环保检测, // 主标题textStyle: { // 主标题样式color: #333,fontWeight: bold,fontSize: 16},left: 20%, // 定位到适合的位置top: 10%, // 定位到适合的位置},{ //…

【Redis】理论进阶篇------Redis的持久化

一、前言 前面学习了Redis的相关的十大数据类型以及用SpringBoot集成我们的Redis的工具代码的书写。从这篇文章开始&#xff0c;就会从Redis相关的一些理论&#xff08;也是面试和工作的热点知识&#xff09;如&#xff1a;Redis的持久化、Redis的订阅发布模型、Redis集群环境搭…

wayland(xdg_wm_base) + egl + opengles 纹理贴图进阶实例(四)

文章目录 前言一、使用gstreamer 获取 pattern 图片二、代码实例1. pattern 图片作为纹理数据源的代码实例1.1 基于opengles2.0 接口的 egl_wayland_texture2_1.c1.2 基于opengles3.0 接口的 egl_wayland_texture3_1.c2. xdg-shell-client-protocol.h 和 xdg-shell-protocol.c3…

【C/C++】实现Reactor高并发服务器 完整版

代码结构 文件介绍 InetAddress.h InetAddress类 ip和端口设置 Socket.h Socket类 设置fd Epoll.h epollfd 管理类 Channel.h Channel类 管理epoll以及对应回调函数实现 EventLoop.h EventLoop事件循环类 TcpServer.h 服务器类 tcpepoll.cpp 主函数 InetAddress.h #if…

阿里云服务器被攻击黑洞了怎么办?

今天一个用户使用阿里云服务器遭受DDOS攻击&#xff0c;收到了攻击的提醒短信&#xff0c;服务器也进入黑洞&#xff0c;联系到了德迅云安全&#xff0c;询问有什么解决办法。目前网络攻击事件频发&#xff0c;相信不少用户都曾收到过类似的攻击短信。今天德迅云安全就分享下&a…

模板(函数模板)---C++

模板目录 模板1.模板概念&#xff12;.泛型编程 1.函数模板1.1 函数模板语法1.2 函数模板注意事项1.3 普通函数与函数模板的区别1.4 普通函数与函数模板的调用规则1.5 模板的局限性1.6 函数模板案例 模板 1.模板概念 模板就是建立通用的模具&#xff0c;大大提高复用性。 模板…

Leetcoder Day16| 二叉树 part05

语言&#xff1a;Java/C 513.找树左下角的值 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 本题需要满足两…