我们在开发系统的时候,经常会遇到系统需要权限控制,而权限的控制程度不同有不同的设计方案。
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在程序中的类中定义用户是否有操作某种对象的权限。
此文章转自http://www.cnblogs.com/yukaizhao/archive/2007/04/15/user_role_action_permission.html
相关推荐
### 应用程序权限设计-权限的控制程度不同的设计方案 #### 一、引言 在软件开发过程中,权限管理是一项至关重要的任务。合理的权限设计不仅可以保障系统的安全性,还能提升用户体验,确保不同用户群体能够访问他们...
在应用程序系统设计中,权限控制是一个至关重要的环节,它确保了不同用户或角色对系统功能的访问和操作符合预设的权限策略。本文将详细探讨几种常见的权限设计方法及其优化。 1. **基于角色的权限设计**:这是最...
【网络应用程序设计】是计算机科学领域的一个重要分支,主要研究如何设计、开发和维护在网络上运行的应用程序。这个学科涵盖了Web开发的基本技术,如HTML、CSS、JavaScript,以及服务器端编程语言,如PHP、Java、...
本文档主要涵盖了项目9的应用程序设计实例,包括设计分析、系统设计和编译应用程序等核心环节。下面我们将深入探讨这些知识点。 首先,设计分析是应用程序开发的第一步,这涉及到数据采集和系统实现功能的分析。...
### Maximo 应用程序设计器知识点详解 #### 一、Maximo 应用程序设计器概述 - **Maximo 应用程序设计器**是IBM Maximo Asset Management系统中的一个关键组件,用于帮助用户创建、修改和管理Maximo应用程序的界面及...
### 应用程序框架设计:构建高效IT系统的基石 #### 核心概念解析与实践指导 应用程序框架设计作为软件工程中的重要组成部分,旨在为多层应用之间的数据传递和交互提供标准化、模块化的解决方案。在现代软件开发中...
在Android应用程序设计中,开发者需要掌握一系列技术和工具来创建功能丰富的移动应用。本主题主要聚焦于Android系统的架构、开发环境的搭建以及应用的基本组件。以下是对这个主题的详细阐述: 一、Android系统架构 ...
《深入浅出 Android Google手持设备应用程序设计》这本书是Android开发者必备的参考资料,它全面而深入地探讨了在Google手持设备上构建应用程序的各种技术和策略。以下将详细解析书中的关键知识点: 1. **Android...
1. **AndroidManifest.xml**:这是应用程序的核心配置文件,包含应用的元数据,如应用名称、作者、功能声明以及所需的权限。尽管在 APK 中是以二进制形式存在,但它包含了应用程序的全局信息。 2. **classes.dex**...
总的来说,Android应用程序开发涉及的内容广泛,包括但不限于组件使用、用户界面设计、数据存储、网络通信、多媒体处理、安全性等。通过深入学习和实践《Android应用程序开发(第三版)》的课件源程序,开发者不仅...
在Maximo的开发过程中,设计应用程序是关键步骤,涉及到多个环节。以下是对标题和描述中涉及的知识点的详细说明: 1. **数据库设计**: - **创建对象**:在Maximo中,对象对应于数据库中的表,它们包含了业务逻辑...
《Android应用程序设计》这本书是Android开发领域的经典之作,旨在帮助读者深入理解Android应用的开发流程和技术。本书涵盖了从基础知识到高级特性的全方位内容,对于想要踏入Android开发领域或者提升现有技能的...
《iPhone应用程序编程指南》是一本面向开发者的重要参考资料,旨在帮助读者深入理解如何为Apple的iOS平台开发应用程序。这本书的中文版使得更多的中国开发者能够轻松掌握iOS应用开发的技术和技巧。 在iPhone应用...
一套 多应用程序 用户 权限管理 中心 数据库设计,如有不好,请提出建议,多多见谅!
3. **权限管理**:可以为不同的应用程序池设置不同的身份验证和权限,满足不同应用的安全需求。 4. **性能优化**:通过配置,可以控制应用程序池的工作模型,如并发请求数量、最大工作时间等,以优化性能。 **应用...
《深入浅出Android--Google手持设备应用程序设计》这本书旨在通过实例教学,帮助读者全面掌握Android应用开发技术,深入了解Android在手持设备上的应用程式设计。在这个过程中,我们将探讨一系列关键知识点,涵盖...
总的来说,“c#窗体应用程序开发的记事本程序”是一个综合性的项目,涵盖了C#基础、文件操作、UI设计、事件处理等多个方面,对于学习和实践C#编程是一个很好的起点。通过这个项目,开发者可以深入理解C#窗体应用程序...
是否允许匿名访问(AllAnonymous)不会影响整个Web应用程序的访问权限,而只是决定内部的SiteCollection或Site是否可以启用匿名访问。同时,配置是否使用SSL,虽然这是构建HTTPS连接的基础,但还需要在IIS中进行额外...
《Visual C#.NET Web应用程序设计(第2版)》是一本深入探讨如何使用C#语言构建Web应用程序的专业书籍。此书的程序源代码是学习和理解书中理论与实践结合的关键资源,涵盖了各种Web开发技术的核心概念和应用。 C#是一...