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

做seo 教你如何选择网站关键词seo网站推广免费

做seo 教你如何选择网站关键词,seo网站推广免费,宝鸡做网站的,新疆做网站的公司有哪些什么是 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/299169.html

相关文章:

  • 专业网站制作公司排行广点通投放平台登录
  • 汝州建设局网站电脑零基础培训学校
  • 网站建设可以一次性进损益吗网站建设的推广渠道
  • 网站建设教学视频公司网址有哪些
  • 用asp做旅游网站源云推广
  • 网站建设百度贴吧临沂色度广告有限公司
  • 如何做介绍一门课程的网站市场调研的内容
  • 网站建设教程软件建站系统主要包括
  • 公司网站建立流程百度竞价点击一次多少钱
  • 做网站运营用什么软件石家庄网络推广
  • 帮人做海报的网站谷歌搜索引擎香港免费入口
  • 聪明的上海网站柳州今日头条新闻
  • 还有哪些网站可以做淘宝活动网络文章发布平台
  • 建设西安网站关键词优化的发展趋势
  • 网站怎么做返回主页按钮怎样宣传自己的产品
  • 网站后台尺寸一般做多大的南宁seo推广公司
  • 阿里网站建设费用seo培训机构哪家好
  • 做网站什么样的域名好搜客
  • 哪里网站备案长春网站开发
  • asp做网站很少sem是什么牌子
  • 嘉定西安网站建设微营销平台
  • 注册外国网站百度投诉中心24人工客服
  • 网站关键词密度怎么计算的深圳百度开户
  • 长沙网站推广公司哪家好北京关键词排名推广
  • 深圳商城网站建设报价单seo网络优化培训
  • 国外大型门户网站外贸平台哪个网站最好
  • 好用的建站系统外贸网站模板
  • 天津自动seo网站优化怎么操作
  • 宿迁市住房和城乡建设局网站东莞网站制作的公司
  • 高职图书馆网站建设大赛seo数据监控平台