若依RuoYi框架数据库权限控制表解析
若依框架在权限控制方面使用了一些数据库表来存储相关的信息。
若依框架有前后端分离版本和微服务版本,微服务版本也采用前后端分离的架构,但与传统的前后端分离版本不同,微服务版本在后端进一步拆分为多个小型的、自治的服务。每个微服务独立负责一个特定的业务功能,并使用独立的技术栈和部署方式。
两者的数据库中涉及权限控制的表应该是一样的。
若依框架官方网址:http://doc.ruoyi.vip/
文章目录
- 前言
- 1. 实体表
- 1.1 用户表 sys_user
- 1.2 角色表 sys_role
- 1.3 菜单表 sys_menu
- 1.4 部门表 sys_dept
- 2.联系表
- 2.1 用户-角色关联表 sys_user_role
- 2.2 角色-菜单关联表 sys_role_menu
- 2.3 角色-部门关联表 sys_role_dept
- 3.数据视图
前言
若依框架在权限控制方面使用了一些数据库表来存储相关的信息。
与权限控制相关的表有以下:
- sys_user(用户表):存储系统用户的基本信息,包括用户ID、用户名、密码等。
- sys_role(角色表):存储角色的基本信息,包括角色ID、角色名称等。
- sys_menu(菜单表):存储系统菜单的信息,包括菜单ID、菜单名称、父菜单ID、菜单类型等。
- sys_dept(部门表):存储部门的信息,包括部门ID、部门名称、父部门ID等。
- sys_user_role(用户角色关联表):用于建立用户和角色之间的关联关系,记录用户拥有的角色。
- sys_role_menu(角色菜单关联表):用于建立角色和菜单之间的关联关系,记录角色拥有的菜单权限。
- sys_role_dept(角色部门关联表):用于建立角色和部门之间的关联关系,记录角色在哪些部门有权限。
其他的表都是与系统配置或者业务相关。
1. 实体表
1.1 用户表 sys_user
表结构
其中部门ID应该是参照部门表sys_dept
但是所有表都没有外键,我们手动添加外键,便于后续展示表之间的关系。建表语句
drop table if exists sys_user;
create table sys_user (user_id bigint(20) not null auto_increment comment '用户ID',dept_id bigint(20) default null comment '部门ID',user_name varchar(30) not null comment '用户账号',nick_name varchar(30) not null comment '用户昵称',user_type varchar(2) default '00' comment '用户类型(00系统用户)',email varchar(50) default '' comment '用户邮箱',phonenumber varchar(11) default '' comment '手机号码',sex char(1) default '0' comment '用户性别(0男 1女 2未知)',avatar varchar(100) default '' comment '头像地址',password varchar(100) default '' comment '密码',status char(1) default '0' comment '帐号状态(0正常 1停用)',del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)',login_ip varchar(128) default '' comment '最后登录IP',login_date datetime comment '最后登录时间',create_by varchar(64) default '' comment '创建者',create_time datetime comment '创建时间',update_by varchar(64) default '' comment '更新者',update_time datetime comment '更新时间',remark varchar(500) default null comment '备注',primary key (user_id)
) engine=innodb auto_increment=100 comment = '用户信息表';
1.2 角色表 sys_role
- 表结构
- 建表语句
drop table if exists sys_role;
create table sys_role (role_id bigint(20) not null auto_increment comment '角色ID',role_name varchar(30) not null comment '角色名称',role_key varchar(100) not null comment '角色权限字符串',role_sort int(4) not null comment '显示顺序',data_scope char(1) default '1' comment '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)',menu_check_strictly tinyint(1) default 1 comment '菜单树选择项是否关联显示',dept_check_strictly tinyint(1) default 1 comment '部门树选择项是否关联显示',status char(1) not null comment '角色状态(0正常 1停用)',del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)',create_by varchar(64) default '' comment '创建者',create_time datetime comment '创建时间',update_by varchar(64) default '' comment '更新者',update_time datetime comment '更新时间',remark varchar(500) default null comment '备注',primary key (role_id)
) engine=innodb auto_increment=100 comment = '角色信息表';
1.3 菜单表 sys_menu
表结构
菜单与菜单之间有“父子”关系建表语句
drop table if exists sys_menu;
create table sys_menu (menu_id bigint(20) not null auto_increment comment '菜单ID',menu_name varchar(50) not null comment '菜单名称',parent_id bigint(20) default 0 comment '父菜单ID',order_num int(4) default 0 comment '显示顺序',path varchar(200) default '' comment '路由地址',component varchar(255) default null comment '组件路径',query varchar(255) default null comment '路由参数',is_frame int(1) default 1 comment '是否为外链(0是 1否)',is_cache int(1) default 0 comment '是否缓存(0缓存 1不缓存)',menu_type char(1) default '' comment '菜单类型(M目录 C菜单 F按钮)',visible char(1) default 0 comment '菜单状态(0显示 1隐藏)',status char(1) default 0 comment '菜单状态(0正常 1停用)',perms varchar(100) default null comment '权限标识',icon varchar(100) default '#' comment '菜单图标',create_by varchar(64) default '' comment '创建者',create_time datetime comment '创建时间',update_by varchar(64) default '' comment '更新者',update_time datetime comment '更新时间',remark varchar(500) default '' comment '备注',primary key (menu_id)
) engine=innodb auto_increment=2000 comment = '菜单权限表';
1.4 部门表 sys_dept
表结构
部门与部门之间有“父子”关系建表语句
drop table if exists sys_dept;
create table sys_dept (dept_id bigint(20) not null auto_increment comment '部门id',parent_id bigint(20) default 0 comment '父部门id',ancestors varchar(50) default '' comment '祖级列表',dept_name varchar(30) default '' comment '部门名称',order_num int(4) default 0 comment '显示顺序',leader varchar(20) default null comment '负责人',phone varchar(11) default null comment '联系电话',email varchar(50) default null comment '邮箱',status char(1) default '0' comment '部门状态(0正常 1停用)',del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)',create_by varchar(64) default '' comment '创建者',create_time datetime comment '创建时间',update_by varchar(64) default '' comment '更新者',update_time datetime comment '更新时间',primary key (dept_id)
) engine=innodb auto_increment=200 comment = '部门表';
2.联系表
2.1 用户-角色关联表 sys_user_role
用户N-1角色
表结构
给两个属性都添加了外键建表语句
drop table if exists sys_user_role;
create table sys_user_role (user_id bigint(20) not null comment '用户ID',role_id bigint(20) not null comment '角色ID',primary key(user_id, role_id)
) engine=innodb comment = '用户和角色关联表';
2.2 角色-菜单关联表 sys_role_menu
角色1-N菜单
表结构
给两个属性都添加了外键建表语句
drop table if exists sys_role_menu;
create table sys_role_menu (role_id bigint(20) not null comment '角色ID',menu_id bigint(20) not null comment '菜单ID',primary key(role_id, menu_id)
) engine=innodb comment = '角色和菜单关联表';
2.3 角色-部门关联表 sys_role_dept
角色1-N部门
表结构
给两个属性都添加了外键建表语句
drop table if exists sys_role_dept;
create table sys_role_dept (role_id bigint(20) not null comment '角色ID',dept_id bigint(20) not null comment '部门ID',primary key(role_id, dept_id)
) engine=innodb comment = '角色和部门关联表';
除此之外,用户表中部门ID参照了部门表,另外还有岗位表sys_post以及用户与岗位之间的对应表sys_user_post,用以表示用户所属的部门及岗位,与权限控制无关。
3.数据视图
在数据库中,上述表之间的关系如图(添加了外键)
画一个简单的ER图如下:
简单来说:
系统是通过将用户与角色关联来进行权限控制的,一个用户只能属于一个角色,一个角色可以有多个用户;
可以给角色分配菜单权限和部门权限,一个角色可以有多个菜单,同时一个菜单也可以被多个角色使用吧,部门同理(所以这里感觉Role-Menu与Role-Dept都是多对多联系,官方给的注释有误,但是实现上没问题);
Role-Dept是设置在部门管理中,某个角色可以管理哪些部门;
1号角色超级管理员拥有所有菜单及部门的权限,不用在数据库表中显示表明。
以上就是若依框架中与权限控制相关的数据库表的简单解析,具体实现以及各项菜单功能十分复杂,有待研究。
若依RuoYi框架数据库权限控制表解析相关推荐
- SpringBoot-Security 具体案例、 实现安全框架、权限控制、aop切入
SpringBoot-Security 具体案例. 实现安全框架.权限控制.aop切入 SpringBoot-Security介绍 Security 官方序言 安全是一个不断变化的目标,追求一个全 ...
- ABP开发框架前后端开发系列---(9)ABP框架的权限控制管理
在前面两篇随笔<ABP开发框架前后端开发系列---(7)系统审计日志和登录日志的管理>和<ABP开发框架前后端开发系列---(8)ABP框架之Winform界面的开发过程>开始 ...
- 【SSH框架/国际物流商综平台】-05 单点登录 用户-角色-权限分配 Ztree.js structs2.0 异常框架 细粒度权限控制 BaseEntitity中createby degree
回顾 Shiro安全框架 认证,授权,加密,会话管理(单点登录),缓存,与web集成 单点登录(SSO Single Sign on)的原理 就是将原有的各个系统的会话管理机制,抽取出来交给第三方集中 ...
- SAP用户权限控制大解析及权限进阶分析
通常basis会使用PFCG做权限管理,你保存时会产生一个系统外的profile name,而且,SU01时用户有profile 和role两栏位. 这些个profile name ,profile, ...
- php : RBAC 基于角色的用户权限控制-表参考
--管理员表 CREATE TABLE `sw_manager` (`mg_id` int(11) NOT NULL AUTO_INCREMENT,`mg_name` varchar(32) NOT ...
- 10月16日上午MySQL数据库作业设计表解析
作业设计表:多张表存储学生成绩及各种信息 需要从表里面体现: 关于学生的:代号 姓名 性别 年龄 班级 关于课程的:代号 名称 关于老师的:代号 姓名 关于成绩的:例如:闫超--网页--90 要能查看 ...
- Java Protected关键字权限控制实例解析
关于Java Protected的大部分用法及注意事项在https://blog.csdn.net/justloveyou_/article/details/61672133这篇博文中讲的很清楚,但是 ...
- 权限控制的两种主要方式详述
权限控制的两种主要方式详述 粗粒度URL级别的权限控制 权限控制主要分为粗粒度URL级别的权限控制和细粒度的方法级别权限控制. 我们在后台系统的操作,无论 是点击一个按钮,还是点击一个菜单项,都是在访 ...
- 小白之AuthorizeAttribute权限控制(一)
web网站一般都需要做访问权限控制,把项目中使用的方式记录一下,也是第一次使用,作为知识积累吧. 项目是基于.NET的EF+MVC 框架,权限控制在Filters中去处理,该文件夹与Controlle ...
最新文章
- 为何Transformer在计算机视觉中如此受欢迎?
- ExtJs4 笔记(5) Ext.Button 按钮
- AS3中,setTimeOut、setInterval、Timer区别
- Netflix如何使用机器学习来提升流媒体质量?
- P5341-[TJOI2019]甲苯先生和大中锋的字符串【SAM】
- 抽象类继承多个抽象类_多重继承?抽象类?C++的内存布局并不复杂
- 201452202014520920145309信息安全系统设计基础实验报告(1)
- selenium webdriver学习(八)------------如何操作select下拉框(转)
- ajax的typeAMDAt,ajax的运用
- HttpClient-Java-发送HTTP请求
- ios 横竖屏切换总结
- AjaxControlToolKit(整理)三.......(35个控件)简单介绍
- NPAPI插件无法加载,有可能跟JDK相关
- dss linux 摄像头 rtsp,[转载]DSS Linux 安装
- QQ2007密码盗取程序介绍(参考部分网上代码)
- deepin linux隐藏磁盘,Deepin 20下开机不自动挂载(隐藏)NTFS分区(Windows分区)的方法...
- Beego项目打包部署到Linux服务器
- Java操作excel自动生成水印背景
- python的开发环境
- 软件测试用例设计时的颗粒度