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

深入分析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.hqwc.cn/news/451886.html

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

相关文章

python numpy np.log 底数

np.log(),以e为底的对数 根据对数函数的性质,如果要以3位底的对数,需要除以np.log(3),即np.log(x)/np.log(3)

[Vue3]父子组件相互传值数据同步

简介 vue3中使用setup语法糖,父子组件之间相互传递数据及数据同步问题 文章目录 简介父传子props传递值 使用v-bind绑定props需要计算toRefcomputed emit传递方法 使用v-on绑定 子传父expose v-model总结 父传子 props传递值 使用v-bind绑定 父组件通过props给子…

春节宅家必备!仅需26元/月,与好友共战《幻兽帕鲁》!

开放世界游戏《幻兽帕鲁》1 月 19 日推出抢先体验版之后,热度连日居高不下,其发售仅 6 天销量就突破了 800 万份,在线人数更是突破了 200 万大关。 因为游戏自身优化问题,不少玩家也遭遇了卡顿、闪退、延迟高等问题。针对此&#…

无人机遥感技术在地质灾害监测应用分析,多旋翼无人机应急救援技术探讨

地质灾害是指在地球的发展演变过程中, 由各种自然地质作用和人类活动所形成的灾害性地质事件。给人民的生命和财产安全带来严重威胁,因此有必要开展地质灾害预测预报、灾害应急和风险区划 遥感技术的快速发展为我们提供了一种获取实时灾害信息的可靠手段…

PS一键磨皮插件Delicious Retouch for mac中文 支持PS2024

Delicious Retouch for Mac是一款优秀的Photoshop插件,专注于人像修饰。以下是该插件的一些主要特点和功能: 软件下载:Delicious Retouch for mac中文 支持PS2024 人像修饰工具:Delicious Retouch专注于人像修饰,提供了…

解决极狐GitLab release 关键字使用中 x509 证书不受信任的问题

release 关键是极狐GitLab CI/CD 中用来发布版本的一个关键字,通常用法如下: release_job:stage: releaseimage: registry.gitlab.com/gitlab-org/release-cli:latestrules:- if: $CI_COMMIT_TAG script:- echo "running release_…

开源软件:技术创新与应用的推动力量

文章目录 每日一句正能量前言开源软件如何推动技术创新开源软件的历史开源软件的开发模式开源软件与闭源软件源代码和开发许可维护特点、支持和成本开源软件的优势减少开支可定制性快速创新发展透明度和安全性 开源软件的应用 常见问题后记 每日一句正能量 不好等待运气降临&am…

【已解决】Oracle 12541 TNS 无监听程序

目录 1、找到Oracle监听服务(OracleOraDb10g_homeTNLListener),停止运行 2、首先查看监听文件是否超过4G 3、修改配置文件 连接oracle突然报错,提示Oracle 12541 TNS 无监听程序,可以按照以下步骤解决 1、找到Ora…

【用Unity开发一款横板跳跃游戏部分需要学习的技术点指南】

*** 用Unity开发一款横板跳跃游戏部分需要学习的技术点指南 空洞骑士是一款基于横板平台跳跃的传统风格2D动作冒险游戏,庞大的游戏世界交错相通,玩家控制小虫子去探索幽深黑暗的洞穴,成为了一代人茶余饭后的惦念,深受玩家喜爱。 …

【C++】类和对象3:默认成员函数之构造函数

前言 今天来初步了解一下类的6个默认成员函数 引入 默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数 下面是六个默认成员函数的图解 构造函数 概念 class Date { public:void Init(int year, int month, int day){_year …

layui

基于复杂结构的自定义模版相关介绍 我这里的接口给的格式数据 我这里搜索往返时候要显示成这样的 layui.use([table,form], function(){ var table layui.table; var form layui.form;// 渲染表格 table.render({ elem: #test-table-reload,toolbar: #toolbarDemo, …

2023年全球软件架构师峰会(ArchSummit上海站):核心内容与学习收获(附大会核心PPT下载)

微服务架构是当今软件架构的主流趋势之一。随着云计算和分布式系统的普及,越来越多的企业开始采用微服务架构来构建他们的应用。微服务架构可以将一个大型的应用拆分成多个小型的服务,每个服务都独立部署、独立运行,并通过轻量级的通信协议进…