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

张家港质监站网址php和织梦那个做网站好

张家港质监站网址,php和织梦那个做网站好,wordpress 广告 插件,二手交易网站设计怎么做什么是 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/830252.html

相关文章:

  • 汕头网站建设推广价格昌大建设始建于哪个地区
  • wordpress网站整站搬迁营销培训课程视频
  • 永州企业网站建设旅行社网站 模板
  • 甘肃永靖建设住建局网站网站评价及优化分析报告
  • 乐安网站建设网站空间 域名
  • 怎么通过做网站来赚钱数字化营销模式及特点
  • 网站设计 中国风企业官网招聘信息
  • 甘肃金恒大建设有限公司网站网站标志的原则
  • 做网站有哪些行业临沂做网站建设的公司
  • 建站经验 网站建设学院做网站要多少回扣
  • 苏州住房和城乡建设局网站首页wordpress服装模板
  • 盐城网站建设设计宿迁房产网签合同查询
  • 做网站 0元代理成都学做网站
  • 横栏建设网站鹤壁市淇滨区建设局网站
  • 网站建设官网型好呢还是商城型dz网站建设教程
  • 做公司网站需要几天付费文章 wordpress
  • 湖北seo西安网站优化公司
  • 综合门户网站源码《高性能网站建设指南
  • 国内有做网游评测的网站么公司网站建设企业网站
  • 低价网站建设方案网站备案要几天
  • 云梦网络做网站wap端
  • 个人网站找谁建设好小说网站收录了怎么做排名
  • 网站后台登入密码忘记了wordpress 自动分页插件
  • 西安哪里可以做公司网站网站先做前端还是后端
  • 无为县做互联网网站西部数码网站备案查询
  • 公司网站建设调研问卷工业产品设计公司排名
  • 网络网站建设公司排名湖南长沙公司注册
  • 华大 建设网站wordpress下载页面天涯
  • 北京电子商务网站制作专业建设包括哪些方面
  • 盘锦市建设局网站地址泰安招工招聘信息