RBAC权限管理,Shiro实践

news2025/6/2 9:32:42
  1. 概念介绍

RBAC是指基于角色的访问控制(Role-Based Access Control),它是一种广泛应用于计算机安全领域的访问控制机制。RBAC通过将用户分配到不同的角色,来控制用户对系统中资源的访问权限。

在RBAC中,每个角色都被授予一组权限,而用户则被分配到一个或多个角色。用户可以访问与他们相关的角色所授予的权限。这种机制使得管理和授权变得更加容易,因为只需要将用户分配到角色,而不需要为每个用户单独指定其访问权限。

RBAC还可以减少错误和安全漏洞的可能性,因为访问控制是由系统管理员预先配置好的,并且与用户的身份无关。此外,RBAC还支持审计和监控,以便对用户的访问行为进行跟踪和检查。

2.表设计

  • resoure表

 

 

这是一个RBAC(基于角色的访问控制)的访问控制列表,它给出了一个系统中各种资源的访问权限。每个资源都被分配了一个唯一的标识符、名称和描述。RBAC的根节点(*)表示该系统的所有资源都受到RBAC的控制。下面是每个资源的详细信息:

  1. 根节点(*):表示该系统的所有资源都受到RBAC的控制。
  2. Odometer:仪表盘,被授予了dashboard权限,其URL为/dashboard,需要角色0才能访问。
  3. SetUp:系统管理,被授予了sys权限,URL为/sys,需要角色0才能访问。
  4. User:用户管理,被授予了user:view权限,URL为/users,需要角色0和角色3才能访问。用户还被分配了查看、新增、修改和删除用户的权限。
  5. Tickets:角色管理,被授予了role:view权限,URL为/roles,需要角色0和角色3才能访问。角色还被分配了查看、新增、修改和删除角色的权限。
  6. Collection:权限资源,被授予了resource:view权限,URL为/resources,需要角色0和角色3才能访问。资源还被分配了查看、新增、修改和删除资源的权限。
  7. 查看用户:被授予了user:view权限,需要角色1才能访问。
  8. 新增用户:被授予了user:create权限,需要角色1才能访问。
  9. 修改用户:被授予了user:update权限,需要角色1才能访问。
  10. 删除用户:被授予了user:delete权限,需要角色1才能访问。
  11. 查看角色:被授予了role:view权限,需要角色1才能访问。
  12. 新增角色:被授予了role:create权限,需要角色1才能访问。
  13. 修改角色:被授予了role:update权限,需要角色1才能访问。
  14. 删除角色:被授予了role:delete权限,需要角色1才能访问。
  15. 查看资源:被授予了resource:view权限,需要角色1才能访问。
  16. 新增资源:被授予了resource:create权限,需要角色1才能访问。
  17. 修改资源:被授予了resource:update权限,需要角色1才能访问。
  18. 删除资源:被授予了resource:delete权限,需要角色1才能访问。
  19. 新增组织架构:被授予了organization:create权限,需要角色1才能访问。
  20. 修改组织架构:被授予了organization:update权限,需要角色1才能访问。
  21. 删除组织架构:被授予了organization:delete权限,需要角色1才能访问。
  22. Timer:操作日志,被授予了log:view权限,URL为/logs,需要角色0和角色3才能访问。该资源还被分配了清空日志和查看日志的权限。

  •       role表

     

      

 

这是一个RBAC(基于角色的访问控制)中的角色清单,它给出了该系统中各种角色的权限。以下是每个角色的详细信息:

  1. 超级管理员:被授予对系统中所有用户的管理权限。这是最高权限的角色,可以修改其他角色的权限。需要谨慎使用该角色的权限。
  2. 开发者:被授予开发项目的权限,可以访问和修改系统中的资源。该角色的权限比普通用户更高。
  3. 普通用户:通常是系统中的最普通的用户,只能访问和修改自己的资源和信息。
  4. 游客:只能查看系统中的资源,无法进行任何修改或操作。该角色的权限最低。
  • role_resource表

 

 该表记录了每个角色被授予了哪些资源的访问权限。

  • user表

 

  •  user_role

这是一个包含用户ID和角色ID的关联表,用于建立用户和角色之间的多对多关系。以下是每个列的详细信息:

  • user_id: 外键,指向用户表中的用户ID。
  • role_id: 外键,指向角色表中的角色ID。

该表使用用户ID和角色ID的组合来标识每个用户被授予了哪些角色,以及每个角色被授予了哪些用户。例如,如果用户ID为1被授予了角色ID为2的权限,则该表中将会有一条记录,其中user_id为1,role_id为2。

通过查询该表,可以找出某个用户被授予了哪些角色,或者找出某个角色被授予了哪些用户。这些查询可以帮助系统管理员更好地了解系统中各个用户和角色之间的关系,并对其进行管理和调整。

3.Shiro代码

 

@RequiresPermissions("role:view") 是一个基于Apache Shiro的注解,用于控制Spring Boot应用程序中方法的访问权限。该注解通常与RBAC(基于角色的访问控制)系统一起使用,用于限制用户访问某些需要特定角色权限的方法。

在Spring Boot应用程序中,当一个方法使用了@RequiresPermissions("role:view")注解,表示该方法需要用户具有role:view权限才能被访问。如果用户没有该权限,则无法调用该方法,将会抛出UnauthorizedException异常。

要使用@RequiresPermissions("role:view")注解,需要在应用程序中配置Apache Shiro安全框架,并使用@EnableShiroSecurity注解启用Shiro安全框架。同时,还需要在Shiro配置文件中定义role:view权限,并将其与相应的角色关联起来,以便系统可以在运行时根据角色权限信息进行访问控制。

总之,@RequiresPermissions("role:view")注解是一个非常有用的注解,可以帮助开发人员轻松地实现基于角色的访问控制,保护应用程序中需要受到保护的资源和方法。

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

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

相关文章

LVS-DR群集部署

目录 一、LVS-DR数据包流向分析 二、 DR 模式的特点 总结 三、LVS-DR中的ARP问题 1.在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱 2.路由器根据ARP表项,会将新来的请求报文转发给RealServer,导致Director的VIP失效 3.解…

openGauss5 企业版之yum方式安装

文章目录 1. 支持的架构和操作系统版本2. 使用限制3. 安装方式4. 使用说明 本章节主要介绍在openEuler 22.03 LTS操作系统上,通过yum命令一键安装openGauss数据库。 1. 支持的架构和操作系统版本 x86-64 openEuler 22.03 LTSARM64 openEuler 22.03 LTS 仅在openEu…

【博学谷学习记录】超强总结,用心分享 | 架构师 Maven学习总结

文章目录 Maven基本1.什么是Maven2.为什么用Maven?(1)jar 包的规模(2) jar 包的来源(3)jar 包之间的依赖关系 3.Maven目录结构4.maven仓库配置 Pom层次Pom文件简介Super POM 依赖管理1 依赖传递2 传递性依…

基于51单片机的智能火灾报警系统温度烟雾光

wx供重浩:创享日记 对话框发送:火灾报警 获取完整源码源文件电路图仿真文件论文报告等 功能简介 51单片机MQ-2烟雾传感ADC0832模数转换芯片DS18B20温度传感器数码管显示按键模块声光报警模块 具体功能: 1、实时监测及显示温度值和烟雾浓度…

【Docker】docker部署springboot+vue+mysql+nginx前后端分离项目【部署实战篇】

文章目录 0、安装docker并准备一个springboot-vue前后端分离项目前后端打包放到服务器上1、docker 安装jdk2、docker 安装mysql通过Docker命令进入Mysql容器内部初始化数据sqlDbx连接查看 3、docker build构建后端镜像修改配置数据库JDBC链接IP为虚拟机服务器IPmaven clean pac…

【MySQL】一文带你掌握聚合查询和联合查询

文章目录 1. 聚合函数1.1 COUNT1.2 SUM1.3 AVG1.4 MAX,MIN 2. GROUP BY3. HAVING4. 联合查询4.1 内连接4.2 外连接4.3 自连接4.4 子连接 5.合并查询5.1 UNION5.2 UNION ALL 1. 聚合函数 概念: 聚合函数是一种用于处理数据集合的函数,它将多个…

Fiddler 抓包的八个实用技巧,你学会了吗?

目录 前言 1、双击Session时,使响应页始终显示到”json”tab页;使请求页始终显示到“webform”tab页 2、显示每个Session 的请求IP地址 3、修改响应Header中的Content-Type 4、右键session 直接使用浏览器打开url 5、Session列中,显示每…

电脑拷贝到u盘数据丢失原因分析|3种恢复方法

在电脑操作中,经常需要将数据拷贝到U盘中进行备份或传输。但有时候,我们可能会遇到数据在拷贝或传输过程中丢失的情况。这种情况下,我们该如何找回这些丢失的数据呢? 下面,为大家介绍一些恢复U盘数据的方法&#xff0c…

[ICNN 1993] Optimal brain surgeon and general network pruning

Contents IntroductionMethodOptimal brain surgeon (OBS)Computing the inverse HessianThe ( t − o ) → 0 (\mathbf t-\mathbf o)\rightarrow 0 (t−o)→0 Approximation References Introduction 作者提出 Optimal brain damage (OBD) 的改进 Optimal brain surgeon (OB…

霍夫变换(Hough Transform)

文章目录 1. 什么是霍夫变换2. 霍夫直线检测2.1 霍夫直线检测的具体步骤2.2 霍夫直线检测的优缺点2.3 OpenCV中霍夫直线检测的应用2.3.1 标准霍夫检测2.3.2 概率霍夫检测 3. 霍夫圆检测4. 源码仓库地址 1. 什么是霍夫变换 霍夫变换(Hough Transform)是图像处理中的一种特征提取…

Spring Data Redis的使用

Redis的valus值的五种数据类型 问题:Windows下出现Could not connect to Redis at 127.0.0.1:6379: 由于目标计算机积极拒绝,无法连接。 解决方法为在Redis-x64-3.2.100目录下打开两个cmd窗口,分别输入 命令redis-server.exe redis.windows…

【Go知识点】Gorm Hook 无侵入实现 数据表防篡改

一、前言 Hi,开门见山的说,这次给大家带来的是关于 Gorm Hook 机制的落地场景,笔者也是在Gorm官方文档中了解到有Hook机制的存在,不过一直没有找到过太多合适的场景来使用。 最近刚好在做一块新业务的设计,因为涉及到…

PL2303HXA自2012已停产,请联系供货商的解决办法

一、概述 PL2303 是Prolific 公司生产的一种高度集成的接口转换器,可提供一个RS232 全双工异步串行通信装置与USB 功能接口便利连接的解决方案。PL2303具有多个历史版本,早期的版本是PL2303HX, 近年有PL2303HXA、PL2303HXC、PL2303HXD(D版本…

SpringCloud01:SpringCloud介绍、服务提供者、服务消费者

SpringCloud和SpringBoot的关系 SpringBoot专注于快速、方便地开发单个个体微服务,SpringCloud关注全局的治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供:管理配置、服务发现、断路器、路由…

GO-slice详解

GO-slice详解 简介 slice(切片)是go中常见和强大的类型,这篇文章不是slice使用简介,从源码角度来分析slice的实现,slice的一些迷惑的使用方式,同时也讲清楚一些问题。 slice的底层实现是数组&#xff0c…

(转载)基于蚁群算法的三维路径规划(matlab实现)

1 理论基础 1.1 三维路径规划问题概述 三维路径规划指在已知三维地图中,规划出一条从出发点到目标点满足某项指标最优,并且避开了所有三维障碍物的三维最优路径。现有的路径规划算法中,大部分算法是在二维规划平面或准二维规划平面中进行路…

微服务框架

流量入口Nginx 在上图中可以看到,Nginx作为整个架构的流量入口,可以理解为一个外部的网关,它承担着请求的路由转发、负载均衡、动静分离等功能。作为一个核心入口点,Nginx肯定要采用多节点部署,同时通过keepalived来实…

(八)CSharp-泛型类和参数约束(1)

一、C# 中的泛型 泛型(generic)特性可以让多个类型共享一组代码。 泛型类型不是类型,而是类型的模板。 C# 提供了5种类型:类、结构、接口、委托和方法。 泛型类 泛型的主要优点: 性能 类型转换时,非泛型的…

2018~2019 学年第二学期《信息安全》考试试题(B 卷)

北京信息科技大学 2018 ~2019 学年第 2 学期 《信息安全》课程期末考试试卷 B 课程所在学院:计算机学院 适用专业班级:计科 1601-06,重修 考试形式:(闭卷) 一. 选择题(本题满分 10 分,共含 10 道小题,每小题 1 分) 网络中存在的安全漏洞主…

虚拟环境创建、配置及激活

虚拟环境创建、配置及激活 前言 一、虚拟环境是什么? 虚拟环境(Virtual Environment)是在计算机上使用特定版本的编程语言(如python 3.9)和其所需包及依赖项的一种方法(如pandas 2.4),它可以被看作是一个隔…