若依之权限处理

news2024/11/26 4:54:43

若依之权限处理

若依前后端不分离版本使用的是shiro进行权限控制,本文主要是对shiro在若依中的使用进行分析。

RBAC权限模型

RBAC是指基于角色的访问控制。其基本思想是,对系统的各种权限不是直接授予具体的用户,而是在用户集合与权限集合之间建立一个权限集合。每一个角色对应一组相应的权限。一旦用户被分配了适当的角色后,该用户就用此角色的所有操作权限。(以上内容来自百度百科——RBAC)
画张图解释一下:
在这里插入图片描述
在RBAC模型中,有三个核心概念:角色、权限和用户。角色是指一组具有相似权限的用户,权限是指允许执行某些特定操作的能力,而用户则是指实际访问系统的人。
RBAC模型还有一个重要的概念——访问决策。访问决策是指系统如何根据给定的角色和权限来控制用户对资源的访问。当用户请求访问某个资源时,系统会根据用户的角色和权限,判断是否允许访问。

shiro介绍以及简单使用

shiro认证和授权

若依中shiro的使用

若依中权限相关的表模型如下:
在这里插入图片描述
现在对上面中涉及到的表进行介绍:

  • sys_user_role:用户角色的关联表;
  • sys_user:用户表,存储用户相关信息;
  • sys_role:角色表;

角色菜单权限

登录若依后,在系统管理菜单下,可以用户管理和角色管理两个子菜单。用户可以先在角色管理中新建角色,然后给角色赋予对应的权限,然后再在用户管理中给用户授予角色,这样用户就有了相应角色的权限。

操作页面

用户管理页面
在这里插入图片描述

角色管理页面
在这里插入图片描述
新建角色时需要设置权限字符和菜单权限。权限字符主要是用户在controller中控制用户是否有操作的权限;菜单权限则指定了用户可以看到哪些菜单。
在这里插入图片描述

代码逻辑

权限相关逻辑代码主要是在ruoyi-admin模块中,其中主要的控制器入口是:SysMenuController、SysRoleController、SysUserController。
在这里插入图片描述
实体类和mapper接口、mapper映射文件主要是ruoyi-system模块中。
在这里插入图片描述

权限这块的逻辑需要从用户登录开始讲。由于若依使用的shiro框架,所以需要自定义一个Relam,然后重写认证(判断用户能否登录,把用户输入的用户名和密码与从数据库中查询到的进行比较)和授权()接口。登录的时候调用subject.login方法即可。

在这里插入图片描述

认证方法主要做的事情如下:根据用户输入信息去数据库中查询,将查询到的信息封装成SimpleAuthenticationInfo对象,密码的比对是由shiro完成的。
UserRealm
授权方法如下:根据当前用户查询用户被赋予了哪些角色,以及用户有哪些菜单的权限;将查询出来的信息放到SimpleAuthorizationInfo对象中。到这里为止用户具有哪些菜单和操作的权限就已经查询出来并设置到相应的对象中去了。
在这里插入图片描述

菜单的展现

在list接口上添加了@RequiresPermissions(“system:menu:list”)注解表示访问这个接口需要system:menu:list权限。而用户有没有这个权限是在登录的时候查询并设置的。如果进行二次开发的时候,我们也可以在创建角色的指定权限字符,然后在接口中根据权限注解判断有没有权限访问接口。
在这里插入图片描述
如果不是admin用户,则查询表sys_role_menu、sys_user_role、sys_role、sys_menu获取当前用户能看到的菜单。
在这里插入图片描述

数据权限

在编辑角色的时候可以给角色指定数据权限。
在这里插入图片描述
数据权限是通过注解和切面来完成的。若依提供了DataScope注解,DataScopeAspect、PermissionsAspect。

参考

  • 若依官网

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

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

相关文章

【论文总结】Drifuzz: Harvesting Bugs in Device Drivers from Golden Seeds

Drifuzz:从金种子中收获设备驱动程序中的漏洞 摘要: 现代计算机中的外围硬件通常被认为是安全的且不带恶意,并且设备驱动程序以信任从硬件输入的方式实现。然而,最近的漏洞攻击(如Broadpwn)已经证明攻击者可以通过易受攻击的外围…

Map复习(JDK1.8)

首先考虑的问题任然是高并发的安全问题: HashMap是一个不安全的,多线程会导致数据不一致。 Hashtable是安全的,但是速度比较慢,只要是安全的就是一性能为代价换来的,加锁开锁需要时间,加锁是只能一个线程访…

服务注册与发现总结

文章目录 概要一、服务注册与发现技术要点1.1、服务注册/下线1.1.1、代理注册1.1.2、客户端注册 1.2、健康检查(续约)1.2.1、主动检测1.2.2、被动检测 1.3、服务发现1.3.1、代理发现1.3.2、客户端发现 1.4、服务变更通知1.4.1、主动通知1.4.2、被动通知 …

linux系统vim编辑器的使用

前言: 前面我们就说过在linux系统下一切都是文件,也可以说在日常使用linux系统过程中使用频率最高工具,基本没有之一,今天就来详情介绍一下我们在日常使用vim编辑器的过程中一些常见的指令,博主始终遵循好记心不如烂笔…

Excel排序

Excel排序 写在前面: Excel是我们最常用的办公工具之一,其中排序是最基础和最重要的一项,如下介绍了两种排序方式,有需要者可以参照这些步骤完成相关任务~ 一、排序方法1 使用Excel自带的排序功能,具体步骤如下&…

pandas菜鸟速学-series

一、pandas是什么 一个基于numpy的数据处理数据分析的工具。 特点: Pandas 的主要数据结构是 Series (一维数据)与 DataFrame(二维数据),这两种数据结构足以处理金融、统计、社会科学、工程等领域里的大…

重学SSE

概述 SSE(Server-Sent Events)是一种用于实现服务器主动向客户端推送数据的技术,也被称为“事件流”(Event Stream)。它基于 HTTP 协议,利用了其长连接特性,在客户端与服务器之间建立一条持久化…

暴力递归到动态规划(一)

⭐️前言⭐️ 动态规划是一个很难的模块,如果一道动态规划的题目直接去推出动态转移方程来解题,是很难的,所以应该先想出暴力解决的方法,再去用空间换时间优化,得出动态规划的解法。 🍉欢迎点赞 &#x1f…

【Java设计模式】—— 享元模式概述和示例

目录 概述享元模式的定义与特点享元模式的结构与实现1. 模式的结构2. 模式的理论实现 享元模式的应用实例代码实现 享元模式的应用场景享元模式的在实际工作中的应用参考文献 概述 在面向对象程序设计过程中,有时会面临要创建大量相同或相似对象实例的问题。创建那…

Linux命令学习之mkdir、rmdir和rm

这篇文章想要学习一下目录的创建(mkdir)、空目录的删除(rmdir)、非空目录的删除(rm)。 mkdir mkdir是新建目录的命令。man mkdir看一下mkdir的使用说明。 按q键退出帮助说明。 mkdir /learnwell在根目录…

贷款业务-贷款模式

参考文章 多流量模式下的系统设计- 呱说产品自营 互联网金融之信贷三部曲:贷中 导读 互联网的玩法,基本都是流量为王。网上也有种说法,互联网平台,最终都会走上金融业务,一般都是指贷款业务。 但是,做…

PLC信号发生器(博途SCL)

信号发生器的应用请参看下面的博客文章,在演示分析滤波器的作用时,我们需要对信号进行叠加处理。 博途PLC滤波指令 Filter_PT1、Filter_PT2、Filter_DT1详细使用说明(含Simulink+博途PLC仿真)_RXXW_Dor的博客-CSDN博客博途S7-1200/1500PLC的PID控制和详细使用说明,请参看…

计算机组成原理---第四章 指令系统习题详解版

(一)课内例题 4.1 4.2 具体分析,4.2 中, 因为只有一行:单字长 二地址:源寄存器、目标寄存器 操作码看OP(15-91) 然后按操作数的物理位置来区别RR型,RS型&#xf…

代码随想录训练营Day58| 739. 每日温度 496.下一个更大元素 I

目录 学习目标 学习内容 739. 每日温度 496.下一个更大元素 I 学习目标 739. 每日温度 496.下一个更大元素 I 学习内容 739. 每日温度 739. 每日温度 - 力扣(LeetCode)https://leetcode.cn/problems/daily-temperatures/ class Solution:def da…

Excel VBA编程

前两天我朋友找我帮忙,让给excel做个按钮功能,方便他们表格统计,我晚上研究了一下给他做出来了,这里记录一下入门操作和大概思路,具体怎么写VBA的代码我就不记录了,那玩意儿看教程去吧,也不是这…

【网络】socket套接字

1.理解IP 每台主机都有自己的IP地址,所以当数据从一台主机传输到另一台主机就需要IP地址。报头中就会包含源IP和目的IP。源IP地址:发送数据报那个主机的IP地址,目的IP地址:想发送到的那个主机的IP地址我们把数据从一台主机传递到…

C语言-const关键字

1.const 关键字 const 是 constant 的缩写,const 在实际编程中用得比较多,意思是“恒定不变的”,它是定义只读变量的关键字,或者说 const 是定义常变量的关键字。 (可读,不可写) const 可以修饰变量,数组&a…

光明区马田大围城市更新旧改项目--华润集团

【华润光明马田大围旧改一期项目基础信息】 项目开发商:华润集团 占 地 面 积:约110151㎡ 建 筑 面 积:待专规图 物 业 类 型:华润一期范围内的待拆迁物业 项 目 进 度:直接确权阶段,即将立项 【项目现…

c++ new 源码学习一下

之前有一篇文章介绍了 new 的一些用法 c new 在指定内存上创建对象&#xff0c;今天结合源码来学习一下 new 更详细的用法。相关的源码&#xff1a;gcc git 1&#xff0c;void* operator new (std::size_t size); 我们可以在头文件<new>里看到它的原型&#xff1a; _G…

J2EE 技术的企业人事管理系统的设计与实现(论文+源码)_kaic

目 录 一、引 言 二、相关技术概述 (一) 基于 MVC 设计模式的 J2EE 技术 (二) MySql 数据库管理系统 (三) 基于 B/S 结构的系统安全 三、企业人事管理系统总体设计 (一) 系统需求分析 1.功能结构分解 2.员工档案管理模块 3.员工工资管理模块 (二) 系统总体结构设计 四、企业人…