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

海南建设教育执业网站上海到北京

海南建设教育执业网站,上海到北京,wordpress网站优化,设计网页时有哪些配色方法系统架构-权限模块的设计 如何评估一个研发人员技术水平,在大部分的情况下不是看其完成业务代码的好坏,更多的时候还是需要看这个研发人员从零构建一个完整项目的能力,在大公司中这样的机会可能相对较少,大部分的时间里都是对现有…

系统架构-权限模块的设计

如何评估一个研发人员技术水平,在大部分的情况下不是看其完成业务代码的好坏,更多的时候还是需要看这个研发人员从零构建一个完整项目的能力,在大公司中这样的机会可能相对较少,大部分的时间里都是对现有项目业务的小修小改,如果不跳出这样的环境,日积月累基本可以说沦为了一个螺丝钉式的业务工程师。相反中小厂能够提供研发人员发挥的空间更大,从某种程度上而言在失去大厂成熟的基建支持环境后,更能考验一个工程师的技术功底。在有过一些实际的项目经验之后,我们可以清晰的认识到,绝大部分的项目由于业务场景的不同,业务模块存在很大的变数,但同时一些模块大部分的系统中都是通用的,比如接下来我们将讨论基于rbac的权限模块,而权限模块又可以划分为三个小的功能模块:用户模块、角色模块、菜单模块。

rbac模型是什么?

rbac全称:Role-Based Access Control(基于角色的权限控制系统),核心在于用户只和角色关联,而角色代表对了权限,是一系列权限的集合。rbac的三要素:

用户:系统中的用户
角色:一系列权限的集合
权限:菜单、按钮、菜单的增删改查权限。

RBAC 模型可以分为:RBAC0、RBAC1、RBAC2、RBAC3 四个阶段,一般公司使用 RBAC0 的模型就可以。另外,RBAC0 相当于底层逻辑,后三者都是在 RBAC0 模型上的拔高。

rbac0

用户和角色、角色和权限多对多关系。简单来说就是一个用户拥有多个角色,一个角色可以被多个用户拥有,这是用户和角色的多对多关系;同样的,角色和权限也是如此。

rbac1

相对于 RBAC0 模型,增加了角色分级的逻辑,类似于树形结构,下一节点继承上一节点的所有权限,如 role1 根节点下有 role1.1 和 role1.2 两个子节点

rbac2

如角色互斥,比较经典的案例是财务系统中出纳不得兼管稽核,那么在赋予财务系统操作人员角色时,同一个操作员不能同时拥有出纳和稽核两个角色。如角色数量限制,例如:一个角色专门为公司 CEO 创建的,最后发现公司有 10 个人拥有 CEO 角色,一个公司有 10 个 CEO?这就是对角色数量的限制,它指的是有多少用户能拥有这个角色。RBAC2 模型主要是为了增加角色赋予的限制条件,这也符合权限系统的目标:权责明确,系统使用安全、保密。

rbac3

同样是基于 RBAC0 模型,但是综合了 RBAC1 和 RBAC2 的所有特点。

数据库设计

CREATE DATABASE IF NOT EXISTS sys_rbac CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE TABLE IF NOT EXISTS `sys_user` 
(`id`                  BIGINT UNSIGNED NOT NULL              AUTO_INCREMENT COMMENT '自增PK',`username`            VARCHAR(50)     NOT NULL              COMMENT '用户名',`enable`              TINYINT(1)      NOT NULL              COMMENT '状态:1正常 2禁用',`created_at`          BIGINT UNSIGNED NOT NULL              COMMENT '创建时间',`updated_at`          BIGINT UNSIGNED NOT NULL              COMMENT '更新时间',`deleted_at`          BIGINT UNSIGNED NOT NULL DEFAULT 0    COMMENT '删除时间',PRIMARY KEY (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统用户表';CREATE TABLE IF NOT EXISTS `sys_role` 
(`id`                  BIGINT UNSIGNED NOT NULL              AUTO_INCREMENT COMMENT '自增PK',`name`                VARCHAR(50)     NOT NULL              COMMENT '角色名称',`code`                VARCHAR(50)     NOT NULL              COMMENT '角色code码',`sort`                INT             NOT NULL              COMMENT '排序',`enable`              TINYINT(1)      NOT NULL              COMMENT '状态:1正常 2禁用',`created_at`          BIGINT UNSIGNED NOT NULL              COMMENT '创建时间',`updated_at`          BIGINT UNSIGNED NOT NULL              COMMENT '更新时间',`deleted_at`          BIGINT UNSIGNED NOT NULL DEFAULT 0    COMMENT '删除时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_code` (`code`, `deleted_at`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统角色表';CREATE TABLE IF NOT EXISTS `sys_menu` 
(`id`                  BIGINT UNSIGNED NOT NULL               AUTO_INCREMENT COMMENT '自增PK',`pid`                 BIGINT UNSIGNED NOT NULL DEFAULT 0     COMMENT '父级id',`name`                VARCHAR(50)     NOT NULL               COMMENT '菜单名称',`url`                 VARCHAR(150)    NOT NULL DEFAULT ''    COMMENT '菜单名称',`icon`                VARCHAR(50)     NOT NULL               COMMENT '图标',`type`                TINYINT(1)      NOT NULL               COMMENT '类型:1菜单 2节点',`sort`                INT             NOT NULL               COMMENT '排序',`permission`          VARCHAR(150)    NOT NULL DEFAULT ''    COMMENT '权限标识',`created_at`          BIGINT UNSIGNED NOT NULL               COMMENT '创建时间',`updated_at`          BIGINT UNSIGNED NOT NULL               COMMENT '更新时间',`deleted_at`          BIGINT UNSIGNED NOT NULL DEFAULT 0     COMMENT '删除时间',PRIMARY KEY (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统菜单表';CREATE TABLE IF NOT EXISTS `sys_user_role` 
(`id`                  BIGINT UNSIGNED NOT NULL               AUTO_INCREMENT COMMENT '自增PK',`user_id`             BIGINT UNSIGNED NOT NULL               COMMENT '用户ID',`role_id`             BIGINT UNSIGNED NOT NULL               COMMENT '角色ID',  `created_at`          BIGINT UNSIGNED NOT NULL               COMMENT '创建时间',`updated_at`          BIGINT UNSIGNED NOT NULL               COMMENT '更新时间',`deleted_at`          BIGINT UNSIGNED NOT NULL DEFAULT 0     COMMENT '删除时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_user_role` (`user_id`, `role_id`, `deleted_at`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户角色关联表';CREATE TABLE IF NOT EXISTS `sys_role_menu` 
(`id`                  BIGINT UNSIGNED NOT NULL               AUTO_INCREMENT COMMENT '自增PK',`menu_id`             BIGINT UNSIGNED NOT NULL               COMMENT '菜单ID',`role_id`             BIGINT UNSIGNED NOT NULL               COMMENT '角色ID',  `created_at`          BIGINT UNSIGNED NOT NULL               COMMENT '创建时间',`updated_at`          BIGINT UNSIGNED NOT NULL               COMMENT '更新时间',`deleted_at`          BIGINT UNSIGNED NOT NULL DEFAULT 0     COMMENT '删除时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_role_menu` (`menu_id`, `role_id`, `deleted_at`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '角色菜单关联表';
http://www.yayakq.cn/news/865678/

相关文章:

  • 制作网站程序h5开发用什么工具
  • 网站首页做多大分辨率网站开发与设计试题
  • 怎样在微信做产品网站兰州城乡建设局网站
  • 有经验的聊城网站建设手机网店开店网站
  • 网站开发语言什么好句容建设局网站
  • 手机网站cms系统中国软件公司官网
  • 男女生做内个的网站网站建设方案包括
  • 吐鲁番高端网站建设平台惠州网站建设网站
  • 医院网站建设合同移动端网站模板怎么做
  • 宣传片拍摄手法和镜头宁波seo外包服务商
  • 给别人做网站被诉侵权wordpress 4.0 谷歌字体
  • 买个网站需要多少钱joomla构建行业网站
  • 交易猫假网站制作郑州比较大的网络公司
  • 怎样在网上建网站做电商生意广州网站服务
  • 谷歌网页seo优化软件免费版
  • 济南网站建设网站制作云南网站建设哪家公司好
  • 微信后台网站开发知识体系淘宝店铺装修免费模板
  • 西宁微网站建设关键词查询工具
  • 怎样局域网站建设男做直播网站
  • 潮州哪里做网站企业网站建设空间
  • 哔哩哔哩免费网站观看做有搜索功能的网站
  • 网站建设一般多少个板块企业网站制作设
  • 学校网站设计的目的wordpress增加产品模块
  • 培训网站计时怎么破深圳人力资源网求职
  • php 网站共享变量备案用网站建设方案书
  • 怎么可以建网站苏州网站建设信息网络
  • 界面设计优秀的网站有哪些百度站长反馈中心
  • 兰州网站排名哪家公司好ps培训班哪个机构好一点
  • 网站开发解决方案移动互联网终端
  • 成都网站制作收费电脑如何做网站