基于角色访问控制的权限系统设计
基于角色访问控制的权限系统设计
内容摘要:我们在开发系统的时候,经常会遇到系统需要权限控制,而权限的控制程度不同有不同的设计方案。 1. 基于角色的权限设计 这种方案是最常见也是比较简单的方案,不过通常有这种设计已经够了,所以微软就设计出这种方案的通用做法,这种方案对于每一个操作不做控制,只是在程序中根据角色对是否具有操作的权限进行控制;这里我们就不做详述。 2. 基于操作的权限设计 这种模式下每一个操作都在数据库中有记录,用户是否拥有该操作的权限也在数据库中有记录,结构如下: 但是如果直接使用上面的设计,会导致数据库中的UserAction这张表数据量非常大,所以我们需要进一步设计提高效率,请看方案3 3. 基于角色和操作的权限设计 如上图所示,我们在添加了Role,和RoleAction表,这样子就可以减少UserAction中的记录,并且使设计更灵活一点。 但是这种方案在用户需求的考验之下也可能显得不够灵活够用,例如当用户要求临时给某位普通员工某操作权限时,我们就需要新增加一种新的用户角色,但是这种用户角色是不必要的,因为它只是一种临时的角色,如果添加一种角色还需要在收回此普通员工权限时删除此角色,我们需要设计一种更合适的结构来满足用户对权限设置的要求。 4. 2,3组合的权限设计,其结构如下: 我们可以看到在上图中添加了UserAction表,使用此表来添加特殊用户的权限,改表中有一个字段HasPermission可以决定用户是否有某种操作的权限,改表中记录的权限的优先级要高于UserRole中记录的用户权限。这样在应用程序中我们就需要通过UserRole和 UserAction两张表中的记录判断权限。 到这儿呢并不算完,有可能用户还会给出这样的需求:对于某一种action所操作的对象某一些记录会有权限,而对于其他的记录没有权限,比如说一个内容管理系统,对于某一些频道某个用户有修改的权限,而对于另外一些频道没有修改的权限,这时候我们需要设计更复杂的权限机制。 5. 对于同一种实体(资源)用户可以对一部分记录有权限,而对于另外一些记录没有权限的权限设计: 对于这样的需求我们就需要对每一种不同的资源创建一张权限表,在上图中对Content和Channel两种资源分别创建了 UserActionContent和UserActionChannel表用来定义用户对某条记录是否有权限;这种设计是可以满足用户需求的但是不是很经济,UserActionChannel和UserActionContent中的记录会很多,而在实际的应用中并非需要记录所有的记录的权限信息,有时候可能只是一种规则,比如说对于根Channel什么级别的人有权限;这时候呢我们就可以定义些规则来判断用户权限,下面就是这种设计。 6. 涉及资源,权限和规则的权限设计 在这种设计下角色的概念已经没有了,只需要Rule在程序中的类中定义用户是否有操作某种对象的权限。 <转载文章,出处来源不明> 责任编辑:C/S框架网 扫一扫加微信
参考文档:
C/S开发框架是如何授权的?有没有基于角色的权限控制? 开发框架的权限系统不用改代码吧? 基于WCF通信的C/S系统快速开发框架的部分架构设计 Winform快速开发框架之权限系统设计(1) - 基本概述 基于角色的访问控制-RBAC模型|C/S框架网 Winform快速开发框架之权限系统设计(2) - 功能模块介绍 Winform快速开发框架之权限系统设计(3) - 功能按钮权限控制基本原理 C#权限管理框架介绍|商业开源C/S系统快速开发框架权限系统设计 软件开发与设计 - MIS-管理信息系统(互联网内容控制系统数据库设计) 软件开发与设计 - CMS内容管理系统-基于thinkphp开发的新版小程序平台全开源版 带29套小程序 可DIY 一键生成 软件开发与设计 - MIS-管理信息系统(信号控制系统数据库的设计文档.) C/S架构软件:系统权限初始化、系统初始化界面设计及参考方案 C/S系统开发框架权限系统 - 功能按钮权限值 - ButtonAuthority类详解 C/S系统开发框架权限系统 - 数据窗体权限值 - AuthorityCategory类详解 基于集团组织架构数据权限系统快速开发框架(C#.NET Winform+支持多数据库)
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |