当前位置: 首页 > wzjs >正文

台州集团网站建设北京网络营销

台州集团网站建设,北京网络营销,南平网站开发公司,用dw做网站的空格怎么打什么是 RBAC 权限模型? RBAC 是个啥 RBAC 就是一个权限控制模型。 RBAC(Role-Based Access Control)权限模型的概念,即:基于角色的权限控制。通过角色关联用户,角色关联权限的方式间接赋予用户权限。 之…

什么是 RBAC 权限模型?

RBAC 是个啥

RBAC 就是一个权限控制模型

  • RBAC(Role-Based Access Control)权限模型的概念,即:基于角色的权限控制。通过角色关联用户,角色关联权限的方式间接赋予用户权限。

  • 之所以在 用户权限 在中间加一层 角色,是为了增加安全性和效率,而且后续扩展上也会提升不少。

打个比方,

  • 比如多个用户拥有相同的权限,在分配的时候就要分别为这几个用户指定相同的权限,修改时也要为这几个用户的权限进行一一修改。
  • 有了角色后,只需要为该角色制定好权限后,将相同权限的用户都指定为同一个角色即可,便于权限管理。
  • 对于批量的用户权限调整,只需调整用户关联的角色权限,无需对每一个用户都进行权限调整,既大幅提升权限调整的效率,又降低了漏调权限的概率。

这个模型中又包含了 2 种:

  1. 用户角色多对一关系,即:一个用户只充当一种角色,一种角色可以有多个用户担当。

  2. 用户角色多对多关系,即:一个用户可同时充当多种角色,一种角色可以有多个用户担当。

那么,什么时候该使用多对一的权限体系,什么时候又该使用多对多的权限体系呢?

  • 如果系统功能比较单一,使用人员较少,岗位权限相对清晰且确保不会出现兼岗的情况,此时可以考虑用多对一的权限体系。

  • 其余情况尽量使用多对多的权限体系,保证系统的可扩展性。如:张三既是行政,也负责财务工作,那张三就同时拥有行政和财务两个角色的权限。

应用示例

参考项目:ruoyi-vue-pro,mysql 版

基于 RABC 权限模型,一共有 5 张表。

实体说明
SysUsersys_user用户信息表
SysRolesys_role角色信息表
SysUserRolesys_user_role用户和角色关联表
SysMenusys_menu菜单权限表
SysRoleMenusys_role_menu角色和菜单关联表

5 张表的关系比较简单:

  • 一个 SysUse ,可以拥有多个 SysRole ,通过 SysUserRole 存储关联。
  • 一个 SysRole ,可以拥有多个 SysMenu ,通过 SysRoleMenu 存储关联。

表结构设计

sys_user(用户信息表)

-- 用户信息表
DROP TABLE IF EXISTS `system_users`;
CREATE TABLE `system_users`
(`id`         bigint                                                        NOT NULL AUTO_INCREMENT COMMENT '用户ID',`username`   varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci  NOT NULL COMMENT '用户账号',`password`   varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '密码',`nickname`   varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci  NOT NULL COMMENT '用户昵称',`remark`     varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL     DEFAULT NULL COMMENT '备注',`dept_id`    bigint                                                        NULL     DEFAULT NULL COMMENT '部门ID',`post_ids`   varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL     DEFAULT NULL COMMENT '岗位编号数组',`email`      varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci  NULL     DEFAULT '' COMMENT '用户邮箱',`mobile`     varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci  NULL     DEFAULT '' COMMENT '手机号码',`sex`        tinyint                                                       NULL     DEFAULT 0 COMMENT '用户性别',`avatar`     varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL     DEFAULT '' COMMENT '头像地址',`status`     tinyint                                                       NOT NULL DEFAULT 0 COMMENT '帐号状态(0正常 1停用)',`login_ip`   varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci  NULL     DEFAULT '' COMMENT '最后登录IP',`login_date` datetime                                                      NULL     DEFAULT NULL COMMENT '最后登录时间',create_user  bigint                                                        null comment '创建人标识',create_time  datetime                                                               default CURRENT_TIMESTAMP not null comment '创建时间',update_user  bigint                                                        null comment '修改人标识',update_time  datetime                                                               default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '修改时间',is_deleted   tinyint                                                                default 0 not null comment '是否已删除 0=否,1=是(删除)',tenant_id    bigint                                                                 default 0 not null comment '租户编号',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDBAUTO_INCREMENT = 1CHARACTER SET = utf8mb4COLLATE = utf8mb4_unicode_ci COMMENT = '用户信息表';

说明:

  • bit(1) 类型用于存储单个位(0 或 1)。
  • DEFAULT b'1':默认值 b'1' 是一个二进制字符串字面量,表示二进制的 1

sys_role(角色信息表)

-- 角色信息表
DROP TABLE IF EXISTS `system_role`;
CREATE TABLE `system_role`
(`id`                  bigint                                                        NOT NULL AUTO_INCREMENT COMMENT '角色ID',`name`                varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci  NOT NULL COMMENT '角色名称',`code`                varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色权限字符串,使用逗号分隔',`sort`                int                                                           NOT NULL COMMENT '显示顺序',`data_scope`          tinyint                                                       NOT NULL DEFAULT 1 COMMENT '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)',`data_scope_dept_ids` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '数据范围(指定部门数组)',`status`              tinyint                                                       NOT NULL COMMENT '角色状态(0正常 1停用)',`type`                tinyint                                                       NOT NULL COMMENT '角色类型',`remark`              varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注',create_user           bigint                                                        null comment '创建人标识',create_time           datetime default CURRENT_TIMESTAMP                            not null comment '创建时间',update_user           bigint                                                        null comment '修改人标识',update_time           datetime default CURRENT_TIMESTAMP                            not null on update CURRENT_TIMESTAMP comment '修改时间',is_deleted            tinyint  default 0                                            not null comment '是否已删除 0=否,1=是(删除)',tenant_id             bigint   default 0                                            not null comment '租户编号',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDBAUTO_INCREMENT = 1CHARACTER SET = utf8mb4COLLATE = utf8mb4_unicode_ci COMMENT = '角色信息表';

sys_user_role(用户和角色关联表)

-- 用户和角色关联表
DROP TABLE IF EXISTS `system_user_role`;
CREATE TABLE `system_user_role`
(`id`        bigint                             NOT NULL AUTO_INCREMENT COMMENT '自增编号',`user_id`   bigint                             NOT NULL COMMENT '用户ID',`role_id`   bigint                             NOT NULL COMMENT '角色ID',create_user bigint                             null comment '创建人标识',create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',update_user bigint                             null comment '修改人标识',update_time datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '修改时间',is_deleted  tinyint  default 0                 not null comment '是否已删除 0=否,1=是(删除)',tenant_id   bigint   default 0                 not null comment '租户编号',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDBAUTO_INCREMENT = 1CHARACTER SET = utf8mb4COLLATE = utf8mb4_unicode_ci COMMENT = '用户和角色关联表';

sys_menu(菜单权限表)

-- 菜单权限表
DROP TABLE IF EXISTS `system_menu`;
CREATE TABLE `system_menu`
(`id`             bigint                                                        NOT NULL AUTO_INCREMENT COMMENT '菜单ID',`name`           varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci  NOT NULL COMMENT '菜单名称',`permission`     varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '权限标识,一般格式为 ${大模块}:${小模块}:{操作}',`type`           tinyint                                                       NOT NULL COMMENT '菜单类型(M目录 C菜单 F按钮)',`sort`           int                                                           NOT NULL DEFAULT 0 COMMENT '显示顺序',`parent_id`      bigint                                                        NOT NULL DEFAULT 0 COMMENT '父菜单ID',`path`           varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL     DEFAULT '' COMMENT '路由地址',`icon`           varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL     DEFAULT '#' COMMENT '菜单图标',`component`      varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL     DEFAULT NULL COMMENT '组件路径',`component_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL     DEFAULT NULL COMMENT '组件名',`status`         tinyint                                                       NOT NULL DEFAULT 0 COMMENT '菜单状态',`visible`        bit(1)                                                        NOT NULL DEFAULT b'1' COMMENT '是否可见',`keep_alive`     bit(1)                                                        NOT NULL DEFAULT b'1' COMMENT '是否缓存',`always_show`    bit(1)                                                        NOT NULL DEFAULT b'1' COMMENT '是否总是显示',create_user      bigint                                                        null comment '创建人标识',create_time      datetime                                                               default CURRENT_TIMESTAMP not null comment '创建时间',update_user      bigint                                                        null comment '修改人标识',update_time      datetime                                                               default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '修改时间',is_deleted       tinyint                                                                default 0 not null comment '是否已删除 0=否,1=是(删除)',tenant_id        bigint                                                                 default 0 not null comment '租户编号',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDBAUTO_INCREMENT = 1CHARACTER SET = utf8mb4COLLATE = utf8mb4_unicode_ci COMMENT = '菜单权限表';

说明:

  • 对于前端来说,每个按钮在展示时,可以判断用户是否有该按钮的权限。如果没有,则进行隐藏。当然,前端在首次进入系统的时候,会请求一次权限列表到本地进行缓存。
  • 对于后端来说,每个接口上会添加 @PreAuthorize("@ss.hasPermi('system:user:list')") 注解。在请求接口时,会校验用户是否有该 URL 对应的权限。如果没有,则会抛出权限验证失败的异常。
  • 一个 perms 属性,可以对应多个权限标识,使用逗号分隔。例如说:"system:user:query,system:user:add"

sys_role_menu(角色和菜单关联表)

-- 角色和菜单关联表
DROP TABLE IF EXISTS `system_role_menu`;
CREATE TABLE `system_role_menu`
(`id`        bigint                             NOT NULL AUTO_INCREMENT COMMENT '自增编号',`role_id`   bigint                             NOT NULL COMMENT '角色ID',`menu_id`   bigint                             NOT NULL COMMENT '菜单ID',create_user bigint                             null comment '创建人标识',create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',update_user bigint                             null comment '修改人标识',update_time datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '修改时间',is_deleted  tinyint  default 0                 not null comment '是否已删除 0=否,1=是(删除)',tenant_id   bigint   default 0                 not null comment '租户编号',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDBAUTO_INCREMENT = 1CHARACTER SET = utf8mb4COLLATE = utf8mb4_unicode_ci COMMENT = '角色和菜单关联表';

学习参考

  • 芋道 Spring Boot 安全框架 Spring Security 入门 | 芋道源码 —— 纯源码解析博客 (iocoder.cn)
  • 到底什么是RBAC权限模型?!RBAC之知其然,却一直不知其所以然。 RBAC就是一个权限控制模型,这个模型是经过时间沉 - 掘金 (juejin.cn)
http://www.dtcms.com/wzjs/78673.html

相关文章:

  • 替网站做任务怎么做的新闻摘抄大全
  • 做网站需要哪些程序如何自己建个网站
  • 建国外网站需要多少钱自己有域名怎么建网站
  • 哪个网站课件做的比较好app开发公司推荐
  • wordpress控制文章显示合肥seo管理
  • 淘客联盟如何做网站推广成都关键词优化报价
  • 做网站模版与定制的区别有必要买优化大师会员吗
  • 做柜子的常去的网站百度账号登录不了
  • 破解网站后台账号密码百度网站怎么做
  • 专做外贸的网站有哪些资料株洲网页设计
  • 政府公文写作网站百度账号登录
  • 自助建微网站各大网站推广平台
  • 免费网站建设模板下载宁波正规优化seo软件
  • 门户网站是如何做引流的西安网站优化公司
  • 广州网站建设维护河南制作网站
  • 怎样用网站做单笔外贸近期国际新闻热点大事件
  • 网站建设-上寻模板百度词条优化工作
  • 市总工会网站建设经验材料seo按天计费系统
  • 澳大利亚网站后缀怎么用网络推广业务
  • 生态建设研究所网站百度推广客户端下载安装
  • 武汉网站建设哪里找意向客户seo对网站优化
  • 网站空间信息查询如何自己创建网址
  • wordpress post_content品牌seo推广咨询
  • 电脑手机网站相互跳转电商网站开发平台
  • 网站的推广等内容百度大搜数据多少钱一条
  • 让别人做网站如何防止后门免费发布推广的平台有哪些
  • 水果网站首页设计美国站外推广网站
  • 四川聚顺成网络科技有限公司个人seo怎么赚钱
  • 上海注册公司核名网站东莞网络营销全网推广
  • 河南建达工程建设监理公司网站百度推广做二级域名