深入分析AOP+自定义注解+RBAC实现操作权限管理设计思想

news2024/11/24 7:33:16

深入分析AOP+自定义注解+RBAC实现操作权限管理设计思想!经过三个小节的部署,我们已经把这个思想走了一遍。下面内容是对于此次设计思想的一个详细介绍。帮助大家完善透彻的了解,到底自定义注解是如何实现的。以及,权限管理的核心思想是什么。


任何软件系统里,都会涉及到权限管理,一般市面上我们常见的是springSecurity.很多朋友对这个框架都熟悉,它经常被用来进行身份的认证和权限的判定。

我们上面三个小节其实就是等于自己定义了一个这样的权限管理系统。只是我们是借助于了AOP(面向切面的编程思想)。

这种思想在一些中大型项目中是很多见的。因为有些时候,我们需要做到更细粒度的权限控制。比如,甚至精确到某一个按钮的操作权限。不仅仅是菜单栏目的级别。比如大家在优酷app里面,可以偶尔会看见推荐过来的电影,需要会员的角色身份,才能播放。那个播放按钮。就是很细的权限控制粒度。如果我们本身就是会员角色了,点击播放按钮,会自动打开影视播放页面。否则,我们会跳转到一个开通会员身份的页面去。

权限管理系统里面其实就是2个大的思想,

第一:你是谁?

第二:你能干什么事情?


权限管理:

1:数据权限

指的是用户是否可以看见某些数据,目的是为了确保数据的保密。

例如财务人员可以看见所有人的工资流水单,但是员工只能看见个人的工资流水单。

具体实现细节:数据权限的颗粒度由粗到细,可以分为菜单级、栏目级、字段级。一般配置页面内都可以灵活操作它的。

2:操作权限

指的是用户是否能否操作对应的按钮和模块。需要先有数据权限,然后才有了操作权限。因此需要增加系统自动校验,选择了操作权限,就默认是开启了查看(数据)的权限。

取消了数据权限,就意味着自动取消了操作权限。


RBAC的数据表设计模式:

需要五张表来完成设计。

1:sys_menu(权限表)

2:sys_user(用户表)

3:sys_role(角色表)

4:sys_role_menu(角色表和权限表的映射关系)

5:sys_user_role(用户表和角色表的映射关系)

关系逻辑清晰明朗。


1:什么是RBAC?

缩写字母全拼是Role-Based-Access-Control

2:基于角色访问控制

特点:权限不会直接分配给用户,而是分配给了用户所拥有的角色属性身上。

优势:当用户数量庞大时,分配权限就会变得很累赘,基于RBAC就会很轻松的解决权限分配问题。

我们只需要把不同的人员划分到对应的权限集合内就行了。

角色具备哪些操作权限的设计内容如上图所示。

用户具备哪些角色属性如下图所示、。

如图,我们只需要把用户可以具备的角色设置好,就可以让它自动实现权限的控制了。

vip会员,和普通访客(guest)自动就会具备了不同的访问权限了。

系统内有多少种角色,可以随时增加。

增加完角色,跟随该角色具备的权限情况,也得去实时同步设置一下就行了。


 如果你们公司的项目,对权限管理的较为宽松,使用市面上开源的权限管理框架就够了。如果要求的非常严格,还想自定义管理,那就应该考虑今天的设计思想了。

 

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

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

相关文章

程序报错无法打开源文件stdafx.h

在运行代码时,代码中头文件突然报错程序无法打开源文件stdafx.h include “stdafx.h”,编译器就说无法打开源文件,直接上干货解决方法是: 1.打开项目 ->项目属性(最后一个)-> C/C ->常规, 2在附…

音频几个相关概念及心理声学模型

系列文章目录 音频格式的介绍文章系列: 音频编解码格式介绍:音频几个相关概念及心理声学模型 https://blog.csdn.net/littlezls/article/details/135499627 音频编解码格式介绍:音频编码格式介绍 https://blog.csdn.net/littlezls/article/d…

nohost本地部署

1、安装node Node.js 官方网站下载:https://nodejs.org/en/download/ 2、安装whistle 安装命令为 npm install -g whistle 或 npm install -g cnpm --registryhttps://registry.npm.taobao.org 后,使用 cnpm install -g whistle 来安装 3、插件修改 官方…

【漏洞库】O2OA系统

O2OA invoke 后台远程命令执行漏洞 CNVD-2020-18740 漏洞描述 O2OA是一款开源免费的企业及团队办公平台,提供门户管理、流程管理、信息管理、数据管理四大平台,集工作汇报、项目协作、移动OA、文档分享、流程审批、数据协作等众多功能,满足企业各类管理…

JavaSE-项目小结-IP归属地查询(本地IP地址库)

一、项目介绍 1. 背景 IP地址是网络通信中的重要标识,通过分析IP地址的归属地信息,可以帮助我们了解访问来源、用户行为和网络安全等关键信息。例如应用于网站访问日志分析:通过分析访问日志中的IP地址,了解网站访问者的地理位置分…

【Docker】Docker Registry(镜像仓库)

文章目录 一、什么是 Docker Registry二、镜像仓库分类三、镜像仓库工作机制四、常用的镜像仓库五、常用命令镜像仓库命令镜像命令(部分)容器命令(部分) 六、docker镜像仓库实战综合实战一:搭建一个 nginx 服务综合实战二:Docker hub上创建自己私有仓库综…

使用maven对springboot项目进行瘦身

目录 一、什么是Maven 二、springboot 项目 三、springboot 项目瘦身 一、什么是Maven Maven是一个基于Java的项目管理和构建工具。它通过提供一个一致的项目结构、自动化构建脚本和依赖管理系统,简化了Java项目的构建过程。 Maven使用一种称为POM(…

CentOS7局域网内搭建本地yum源

CentOS7.6 局域网内搭建本地yum源 一、背景 客户机房服务器无法直连公网,远程通过堡垒机部署环境,因为机器比较多,最终选择通过安装自定义yum源进行部署。以下为自己部署yum源过程,以备后续使用。 二、准备yum源Packages 网上…

如何以管理员身份删除node_modules文件

今天拉项目,然后需要安装依赖,但是一直报错,如下: 去搜这个问题会让把node_modules文件先删掉 再去安装依赖。我在删除的过程中会说请以管理员身份来删除。 那么windows如何以管理员身份删除node_modules文件呢? wi…

impala与kudu进行集成

文章目录 概要Kudu与Impala整合配置Impala内部表Impala外部表Impala sql操作kuduImpala jdbc操作表如果使用了Hadoop 使用了Kerberos认证,可使用如下方式进行连接。 概要 Impala是一个开源的高效率的SQL查询引擎,用于查询存储在Hadoop分布式文件系统&am…

性能篇:如何解决高并发下 I/O瓶颈?

大家好,我是小米!今天我们来聊一个在高并发场景下经常遇到的挑战,那就是I/O瓶颈。随着互联网的快速发展,我们的应用在处理海量数据时,I/O操作成为了一个极为关键的环节。那么,问题来了,什么是I/O呢? 什么是I/O I/O(Input/Output)是计算机系统中一个至关重要的概念,…

python+pytest接口自动化 —— 参数关联

整理了一些软件测试方面的资料、面试资料(接口自动化、web自动化、app自动化、性能安全、测试开发等),有需要的小伙伴可以文末关注我的文末公众号或者进软件交流群,无套路自行领取~ 什么是参数关联? 参数关联&#…

Java语法学习坐标体系/绘图

Java语法学习坐标体系/绘图 大纲 基本介绍绘图 具体案例 1. 基本介绍 2.绘图 基本介绍: 注意每次自动调用,就会重新执行一次paint方法里的所有程序 先自定义面板 创建一个类继承JPanel,然后重写构造器,paint方法 class M…

机器学习5-线性回归之损失函数

在线性回归中,我们通常使用最小二乘法(Ordinary Least Squares, OLS)来求解损失函数。线性回归的目标是找到一条直线,使得预测值与实际值的平方差最小化。 假设有数据集 其中 是输入特征, 是对应的输出。 线性回归的…

css1基础选择器

大纲 一.标签选择器 比较简单,前面直接写目标标签 二.类选择器 应用 例子 三.多类名选择器(调用时中间用空格隔开) 四.id选择器 应用 五.通配符选择器 应用 六.总结

淘宝镜像到期如何切换镜像及如何安装淘宝镜像

淘宝镜像到期如何切换镜像及如何安装淘宝镜像 一、淘宝镜像到期如何切换新镜像二、第一次使用淘宝镜像如何配置镜像 一、淘宝镜像到期如何切换新镜像 清空缓存:npm cache clean --force切换镜像源:npm config set registry https://registry.npmmirror.…

用友NC getFileLocal 任意文件下载

【产品介绍】 用友NC以“全球化集团管控、行业化解决方案、全程化电子商务、平台化应用集成”的管理业务理念而设计,采用J2EE架构和先进开放的集团级开发平台UAP,形成了集团管控8大领域15大行业68个细分行业的解决方案。 【漏洞介绍】 用友NC getFile…

debian12 解决 github 访问难的问题

可以在 /etc/hosts 文件中添加几个域名与IP对应关系,从而提高 github.com 的访问速度。 据搜索了解(不太确定),可以添加这几个域名:github.com,github.global.ssl.fastly.net,github.global.fa…

【实战】阿里智能编码助手通义灵码

文章目录 前言技术积累通义灵码是什么?Copilot是什么?通义灵码主要功能通义灵码有哪些优势?通义灵码支持语言/工具通义灵码接入方式通义灵码帮助中心 实战演示安装插件行/函数级实时续写自然语言生成代码代码优化单元测试生成代码注释生成解释…

Unity根据落点和抛物线运行时间,求初始力

抛物线运行时长为2秒: 抛物线运行时长为4秒: 原理就是: 在竖直方向只受重力,做匀加速直线运动,水平不受力,做匀速直线运动。 代码: public void Update(){if (Input.GetKeyDown(KeyCode.Space)…