若依之权限处理
若依之权限处理
若依前后端不分离版本使用的是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完成的。

授权方法如下:根据当前用户查询用户被赋予了哪些角色,以及用户有哪些菜单的权限;将查询出来的信息放到SimpleAuthorizationInfo对象中。到这里为止用户具有哪些菜单和操作的权限就已经查询出来并设置到相应的对象中去了。

菜单的展现
在list接口上添加了@RequiresPermissions(“system:menu:list”)注解表示访问这个接口需要system:menu:list权限。而用户有没有这个权限是在登录的时候查询并设置的。如果进行二次开发的时候,我们也可以在创建角色的指定权限字符,然后在接口中根据权限注解判断有没有权限访问接口。

如果不是admin用户,则查询表sys_role_menu、sys_user_role、sys_role、sys_menu获取当前用户能看到的菜单。

数据权限
在编辑角色的时候可以给角色指定数据权限。

数据权限是通过注解和切面来完成的。若依提供了DataScope注解,DataScopeAspect、PermissionsAspect。
参考
- 若依官网
相关文章:
若依之权限处理
若依之权限处理 若依前后端不分离版本使用的是shiro进行权限控制,本文主要是对shiro在若依中的使用进行分析。 RBAC权限模型 RBAC是指基于角色的访问控制。其基本思想是,对系统的各种权限不是直接授予具体的用户,而是在用户集合与权限集合…...
华为OD机试真题 Java 实现【矩阵最大值】【2023 B卷 100分】,附详细解题思路
一、题目描述 给定一个仅包含0和1的N*N的二维矩阵,请计算二维矩阵的最大值。 计算规则如下: 1、每行元素按下标顺序组成一个二进制数(下标越大越排在低位),二进制数的值就是该行的值。矩阵各行值之和为矩阵的值。 2、允许通过向左或向右整体循环移动每行元素来改变各元…...
ModuleNotFoundError: No module named ‘transformers_modules.chatglm-6b_v1‘的解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...
MMPretrain代码课
安装注意事项 训练时需要基于算法库源码进行开发,所以需要git clone mmpretrain仓库。如果只调用,则pip install 即可。 from mmpretrain import get_model, list_models,inference_model分别用于模型的获取、例举、推理 此时还没加载预训练权重 tor…...
Selenium自动化程序被检测为爬虫,怎么屏蔽和绕过
Selenium 操作被屏蔽 使用selenium自动化网页时,有一定的概率会被目标网站识别,一旦被检测到,目标网站会拦截该客户端做出的网页操作。 比如淘宝和大众点评的登录页,当手工打开浏览器,输入用户名和密码时,…...
Nvidia Jetson Orin:开发技巧
Jetson PXXX定义 P2180 -> Jetson TX1 P3310 -> Jetson TX2 P3489 -> Jetson TX2i P3448 -> Jetson Nano devkit P3448-0020 -> Jetson Nano production module P2888 -> Jetson Xavier P2888-0060 -> Jetson Xavier-8GB P3701 -> Jetson AGX Orin D…...
为什么需要 git 和 相关的小知识
为什么需要git和相关的小知识 先看一个实际需求,引出Git 问题: 公司五一活动计划 ● 先说一个最简单的情况,比如你做了公司五一活动计划书(如图) 解决方案: 版本管理工具(Git) 一句话: Git 是目前最流行的分布式版本控制软件 Git 是怎么来的? Git…...
(详解)vue中实现主题切换的三种方式
目录 一、背景 二、实现思路 方法1:定义全局的CSS变量 方法2:切换已定义好的css文件 方法3:切换顶级CSS类名 (需使用css处理器,如sass、less等) 一、背景 在我们开发中我们会遇到像是需要切换程序风格、主题切换啦这种应用场景。 参考大佬…...
英国皇家植物园采用机器学习预测植物抗疟性,将准确率从 0.46 提升至 0.67
内容一览:疟疾是严重危害人类生命健康的重大传染病,研究人员一直在致力于寻找新的植物源性抗疟疾化合物,以研发相关药物。近期英国皇家植物园利用机器学习 算法 有效预测了植物抗疟性,该研究成果目前已发表在《Frontiers in Plant…...
基于Locust实现MQTT协议服务的压测脚本
一、背景简介 业务背景大概介绍一下,就是按照国标规定,车辆需要上传一些指定的数据到ZF的指定平台,同时车辆也会把数据传到企业云端服务上,于是乎就产生了一些性能需求。 目前我们只是先简单的进行了一个性能场景的测试…...
AURIX TC3XX Cached PFLASH与Non-Cached PFLASH的区别
Cached ? Non-Cached? 在阅读TC3XX的用户手册时,在内存映射表中,有两个segment都是Program Flash,而且大小都一样是3M,一个是segment 8 另一个是segment10 这难免让人产生疑惑,二者区别在哪? …...
uniapp开发小程序-显示左滑删除效果
一、效果图: 二、代码实现: <template><view class"container"><view class"myorderList"><uni-swipe-action><uni-swipe-action-item class"swipe-action-item" :right-options"option…...
FPGA 的数字信号处理:Verilog 实现简单的 FIR 滤波器
该项目介绍了如何使用 Verilog 实现具有预生成系数的简单 FIR 滤波器。 绪论 不起眼的 FIR 滤波器是 FPGA 数字信号处理中最基本的模块之一,因此了解如何将具有给定抽头数及其相应系数值的基本模块组合在一起非常重要。因此,在这个关于 FPGA 上 DSP 基础…...
使用粒子群优化算法(PSO)辨识锂电池二阶RC模型参数(附MATLAB代码)
目录 一、原理部分 二、代码详解部分 三、结果及分析 一、原理部分 PSO算法由美国学者于 1995 年提出,因其算法简单、效果良好,而在很多领域得到了广泛应用。该算法的起源是模拟鸟群的觅食过程,形成一种群体智能搜索算法。 其核心是&#…...
如何利用地面控制点实现倾斜摄影三维模型数据的几何坐标变换和纠正?
如何利用地面控制点实现倾斜摄影三维模型数据的几何坐标变换和纠正? 倾斜摄影是一种在空中拍摄地表物体的技术,可以获得高分辨率、高精度的三维模型数据,广泛应用于城市规划、建筑设计、土地管理等领域。然而,由于航拍时无法避免姿…...
设计规则之里氏替换原则
tip: 作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。 相关规则: 推荐:体系化学习Java(Java面试专题) 1.6大设…...
【叠高高】叠蛋糕游戏的微信小程序开发流程详解
记得小时候玩过的搭积木游戏吗,和叠高高游戏原理差不多的,与之类似的还有盖高楼游戏,就是看谁盖的(叠的)最高,这里讲一下比较基础的叠高高游戏小程序实现过程,对编程感兴趣的同学可以参考学习一…...
收集关键词的方法有哪些?(如何查找精准的行业流量关键词)
关键词的收集通常可以通过以下几种方法: 关键词收集方法 1.根据市场价值、搜索词竞争性和企业实际产品特征进行筛选:确定您的关键词列表之前,建议先进行市场分析,了解您的竞争对手、行业状况和目标受众等信息,以更好地了解所需的特…...
【GreenDao】RxQuery查询并修改GreenDao数据库,完成后更新UI
GreenDao是一个轻量级的ORM(对象关系映射)数据库,而RxJava是一个响应式编程库,可以帮助我们更轻松地处理异步事件。在 Android 应用程序中,您可以使用这两个库一起处理数据库查询和更新,并使用观察者模式来…...
Modifier ‘public‘ is redundant for interface methods错误
java中接口的方法默认是 public abstract 的 所以放心的删掉public即可,如果改为protected 或者 private还会报错 接口的方法及变量的默认修饰符 1.接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract (只能是 public abst…...
SmallThinker-3B-Preview惊艳表现:复杂逻辑推理任务准确率提升实测报告
SmallThinker-3B-Preview惊艳表现:复杂逻辑推理任务准确率提升实测报告 最近,一个名为SmallThinker-3B-Preview的小模型在技术社区里悄悄火了起来。你可能要问,现在动辄几百亿参数的大模型满天飞,一个只有30亿参数的“小家伙”有…...
dygraphs核心架构解析:理解Canvas渲染机制与高性能图表实现
dygraphs核心架构解析:理解Canvas渲染机制与高性能图表实现 【免费下载链接】dygraphs Interactive visualizations of time series using JavaScript and the HTML canvas tag 项目地址: https://gitcode.com/gh_mirrors/dy/dygraphs dygraphs是一个基于HTM…...
软件测试员转型AI测试:机遇与挑战全解析
技术浪潮下的必然选择在人工智能技术席卷全球的浪潮中,软件测试领域正经历前所未有的变革。2026年数据显示,AI在测试行业的渗透率已超40%,新发AI测试岗位量同比增长543%,薪资溢价高达18%。这一趋势迫使测试从业者直面转型抉择&…...
告别重复劳动:用快马AI自动生成akshare数据清洗与分析流水线
告别重复劳动:用快马AI自动生成akshare数据清洗与分析流水线 金融数据分析中,数据获取和清洗往往是最耗时的环节。每次研究新标的,我们都要重复编写类似的代码:从不同接口获取数据、对齐时间轴、处理缺失值、计算技术指标……这些…...
手把手教你用Whistle给SSE/流式接口做Mock:从复制URL到完整响应的保姆级配置
从零构建SSE接口Mock环境:Whistle流式数据模拟实战指南 当你在开发一个实时聊天应用或AI对话界面时,Server-Sent Events (SSE)技术能提供持续的数据流,但测试环境的搭建往往令人头疼。想象一下,你的前端代码需要处理/api/chat这样…...
遥感智能体模块全景解析:从任务拆解到工作流编排
1. 遥感智能体的核心架构设计 第一次接触遥感智能体(RS-Agent)这个概念时,很多人会感到困惑:它和传统遥感处理软件有什么区别?简单来说,RS-Agent更像是一个"会思考的助手"。我参与过几个遥感智能…...
SAP IDoc入站出站处理全流程拆解:从WE19测试到IDOC_INPUT_函数调试
SAP IDoc接口开发实战:从零构建到生产环境调试全指南 在SAP系统集成领域,IDoc(Intermediate Document)作为企业级数据交换的标准载体,其重要性不言而喻明。不同于简单的文件传输,一个健壮的IDoc接口需要开发…...
Abaqus数值模拟案例研究:随机纤维分布二维RVE模型中的微观横向拉伸损伤与延性损伤评估
abaqus数值模拟案例系列-随机纤维分布二维RVE模型微观横向拉伸损伤,设置了周期边界,采用Drucker-Prager(dp)准则,Ductile-Damage延性损伤,界面采用cohesive单元,采用牵引分离方法,Qu…...
示波器安全操作与高压测量实践指南
示波器安全使用指南:从基础操作到高压测量实践1. 示波器使用安全概述示波器作为电子工程师的核心调试工具,其正确使用直接关系到测量结果的准确性和操作人员的人身安全。在实际工程应用中,约35%的测量事故源于不规范的示波器操作,…...
2026年03月CCF-GESP编程能力等级认证Scratch图形化编程二级真题解析
本文收录于《Scratch等级认证CCF-GESP图形化真题解析》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(每题 3 分,共 30 分) 第 1 题 在 2026 年春晚的《武 BOT》节目中,一群机器人表演空翻:它们落地后晃一下又能站稳,还会移动保持队形整齐。如果…...
