关于权限:终于有篇文章把后管权限系统设计讲清楚了
在罕用的后盾管理系统中,通常都会有权限零碎设计,以用于给对应人员调配不同权限,管制其对后管零碎中的某些菜单、按钮以及列表数据的可见性。 本文将用 waynboot-mall 我的项目举例,给大家介绍常见后管零碎的权限管制该如何设计。纲要如下, 权限模型 要了解权限管制,咱们须要先理解什么是权限模型。 权限模型是指用于形容用户、角色和权限之间关系的一种形象模型。不同的权限模型有不同的优缺点,实用于不同的场景和需要。在本我的项目中,咱们采纳了 RBAC(Role-Based Access Control)模型,即基于角色的访问控制模型。 RBAC 模型的根本思维是将用户和权限拆散,通过角色作为中间层来连贯用户和权限。一个角色能够关联多个权限,一个用户能够领有多个角色。这样能够实现灵便的权限配置和治理,防止间接给用户调配权限带来的复杂性和冗余性。 RBAC 模型有多个扩大版本,如 RBAC0、RBAC1、RBAC2 等。在本我的项目中,咱们应用了 RBAC0 模型,即最根本的 RBAC 模型。RBAC0 模型蕴含三个因素:用户(User)、角色(Role)和权限(Permission)。用户是指应用零碎的主体,角色是指一组相干的权限的汇合,权限是指对系统资源的拜访或操作能力。 在 waynboto-mall 我的项目中,RBAC0 中的权限对应的就是菜单。菜单权限蕴含菜单页面对用户是否可见、页面按钮对用户是否可见、页面列表数据依据用户进行过滤等。权限因素 在 RBAC0 模型中,咱们须要对用户、角色和权限进行定义和梳理。具体来说,咱们须要确定以下几个方面: 用户的起源和属性:用户是从哪里获取的?用户有哪些属性?如用户名、明码、昵称、手机号、邮箱等。角色的命名和分类:角色是如何命名的?角色有哪些分类?如依照部门、职位、性能等进行划分。权限的类型和范畴:权限有哪些类型?权限波及哪些资源?如页面权限、操作权限、数据权限等。用户、角色和权限之间的关联形式:用户如何与角色关联?角色如何与权限关联?如一对一、一对多、多对多等。在 waynboto-mall 我的项目中,我做了以下的定义和梳理: 用户设计用户来源于零碎外部注册或内部导入,用户有用户名、明码、姓名、手机号、邮箱等属性。表构造如下, CREATE TABLE `sys_user` ( `user_id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID', `dept_id` bigint DEFAULT NULL COMMENT '部门ID', `user_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户账号', `nick_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户昵称', `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '用户邮箱', `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '手机号码', `sex` tinyint DEFAULT '0' COMMENT '用户性别(0男 1女 2未知)', `avatar` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '头像地址', `password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '明码', `user_status` tinyint DEFAULT '0' COMMENT '帐号状态(0失常 1停用)', `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创立工夫', `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新工夫', `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注', `del_flag` tinyint(1) DEFAULT '0' COMMENT '删除标记(0代表存在 1代表删除)', PRIMARY KEY (`user_id`) USING BTREE, UNIQUE KEY `user_name_uqi` (`user_name`) USING BTREE) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='用户信息表';角色设计角色依照功能模块进行命名,如商品治理、订单治理、营销治理等。角色能够分为一般角色和超级管理员角色,一般角色能够领有局部或全副功能模块的权限,超级管理员角色能够领有所有功能模块的权限,并且能够治理其余用户和角色。表构造如下 ...