若依框架在权限控制方面使用了一些数据库表来存储相关的信息。
若依框架有前后端分离版本和微服务版本,微服务版本也采用前后端分离的架构,但与传统的前后端分离版本不同,微服务版本在后端进一步拆分为多个小型的、自治的服务。每个微服务独立负责一个特定的业务功能,并使用独立的技术栈和部署方式。
两者的数据库中涉及权限控制的表应该是一样的。

若依框架官方网址: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框架数据库权限控制表解析相关推荐

  1. SpringBoot-Security 具体案例、 实现安全框架、权限控制、aop切入

    SpringBoot-Security 具体案例. 实现安全框架.权限控制.aop切入 SpringBoot-Security介绍 Security 官方序言 ​ 安全是一个不断变化的目标,追求一个全 ...

  2. ABP开发框架前后端开发系列---(9)ABP框架的权限控制管理

    在前面两篇随笔<ABP开发框架前后端开发系列---(7)系统审计日志和登录日志的管理>和<ABP开发框架前后端开发系列---(8)ABP框架之Winform界面的开发过程>开始 ...

  3. 【SSH框架/国际物流商综平台】-05 单点登录 用户-角色-权限分配 Ztree.js structs2.0 异常框架 细粒度权限控制 BaseEntitity中createby degree

    回顾 Shiro安全框架 认证,授权,加密,会话管理(单点登录),缓存,与web集成 单点登录(SSO Single Sign on)的原理 就是将原有的各个系统的会话管理机制,抽取出来交给第三方集中 ...

  4. SAP用户权限控制大解析及权限进阶分析

    通常basis会使用PFCG做权限管理,你保存时会产生一个系统外的profile name,而且,SU01时用户有profile 和role两栏位. 这些个profile name ,profile, ...

  5. php : RBAC 基于角色的用户权限控制-表参考

    --管理员表 CREATE TABLE `sw_manager` (`mg_id` int(11) NOT NULL AUTO_INCREMENT,`mg_name` varchar(32) NOT ...

  6. 10月16日上午MySQL数据库作业设计表解析

    作业设计表:多张表存储学生成绩及各种信息 需要从表里面体现: 关于学生的:代号 姓名 性别 年龄 班级 关于课程的:代号 名称 关于老师的:代号 姓名 关于成绩的:例如:闫超--网页--90 要能查看 ...

  7. Java Protected关键字权限控制实例解析

    关于Java Protected的大部分用法及注意事项在https://blog.csdn.net/justloveyou_/article/details/61672133这篇博文中讲的很清楚,但是 ...

  8. 权限控制的两种主要方式详述

    权限控制的两种主要方式详述 粗粒度URL级别的权限控制 权限控制主要分为粗粒度URL级别的权限控制和细粒度的方法级别权限控制. 我们在后台系统的操作,无论 是点击一个按钮,还是点击一个菜单项,都是在访 ...

  9. 小白之AuthorizeAttribute权限控制(一)

    web网站一般都需要做访问权限控制,把项目中使用的方式记录一下,也是第一次使用,作为知识积累吧. 项目是基于.NET的EF+MVC 框架,权限控制在Filters中去处理,该文件夹与Controlle ...

最新文章

  1. 为何Transformer在计算机视觉中如此受欢迎?
  2. ExtJs4 笔记(5) Ext.Button 按钮
  3. AS3中,setTimeOut、setInterval、Timer区别
  4. Netflix如何使用机器学习来提升流媒体质量?
  5. P5341-[TJOI2019]甲苯先生和大中锋的字符串【SAM】
  6. 抽象类继承多个抽象类_多重继承?抽象类?C++的内存布局并不复杂
  7. 201452202014520920145309信息安全系统设计基础实验报告(1)
  8. selenium webdriver学习(八)------------如何操作select下拉框(转)
  9. ajax的typeAMDAt,ajax的运用
  10. HttpClient-Java-发送HTTP请求
  11. ios 横竖屏切换总结
  12. AjaxControlToolKit(整理)三.......(35个控件)简单介绍
  13. NPAPI插件无法加载,有可能跟JDK相关
  14. dss linux 摄像头 rtsp,[转载]DSS Linux 安装
  15. QQ2007密码盗取程序介绍(参考部分网上代码)
  16. deepin linux隐藏磁盘,Deepin 20下开机不自动挂载(隐藏)NTFS分区(Windows分区)的方法...
  17. Beego项目打包部署到Linux服务器
  18. Java操作excel自动生成水印背景
  19. python的开发环境
  20. 软件测试用例设计时的颗粒度

热门文章

  1. Android 发邮件
  2. windows关闭nginx
  3. JavaScript异步执行流程
  4. 对面向对象编程的理解
  5. 【FreeRTOS(二)】任务优先级
  6. 阿里云盘安装时提示临时目录所在磁盘空间不足,无法解压
  7. html 设置button 内文字垂直居中
  8. 为XBox开发者提供的ASan早期发布版本
  9. NDVI时间序列分析之Sen+MK分析全过程梳理
  10. android的筛选功能,android实现多条件筛选列表菜单筛选菜单