`

权限管理设计一

阅读更多

我们在开发系统的时候,经常会遇到系统需要权限控制,而权限的控制程度不同有不同的设计方案。

 

1.       基于角色的权限设计

这种方案是最常见也是比较简单的方案,不过通常有这种设计已经够了,所以微软就设计出这种方案的通用做法,这种方案对于每一个操作不做控制,只是在程序中根据角色对是否具有操作的权限进行控制;这里我们就不做详述

2.       基于操作的权限设计

这种模式下每一个操作都在数据库中有记录,用户是否拥有该操作的权限也在数据库中有记录,结构如下:

 


但是如果直接使用上面的设计,会导致数据库中的
UserAction这张表数据量非常大,所以我们需要进一步设计提高效率,请看方案3

 

3.       基于角色和操作的权限设计

 


如上图所示,我们在添加了
Role,和RoleAction表,这样子就可以减少UserAction中的记录,并且使设计更灵活一点。

但是这种方案在用户需求的考验之下也可能显得不够灵活够用,例如当用户要求临时给某位普通员工某操作权限时,我们就需要新增加一种新的用户角色,但是这种用户角色是不必要的,因为它只是一种临时的角色,如果添加一种角色还需要在收回此普通员工权限时删除此角色,我们需要设计一种更合适的结构来满足用户对权限设置的要求。

 

4.       2,3组合的权限设计,其结构如下:

 


我们可以看到在上图中添加了
UserAction表,使用此表来添加特殊用户的权限,改表中有一个字段HasPermission可以决定用户是否有某种操作的权限,改表中记录的权限的优先级要高于UserRole中记录的用户权限。这样在应用程序中我们就需要通过UserRoleUserAction两张表中的记录判断权限。

到这儿呢并不算完,有可能用户还会给出这样的需求:对于某一种action所操作的对象某一些记录会有权限,而对于其他的记录没有权限,比如说一个内容管理系统,对于某一些频道某个用户有修改的权限,而对于另外一些频道没有修改的权限,这时候我们需要设计更复杂的权限机制。

 

5.       对于同一种实体(资源)用户可以对一部分记录有权限,而对于另外一些记录没有权限的权限设计:

 


对于这样的需求我们就需要对每一种不同的资源创建一张权限表,在上图中对
ContentChannel两种资源分别创建了UserActionContentUserActionChannel表用来定义用户对某条记录是否有权限;这种设计是可以满足用户需求的但是不是很经济,UserActionChannelUserActionContent中的记录会很多,而在实际的应用中并非需要记录所有的记录的权限信息,有时候可能只是一种规则,比如说对于根Channel什么级别的人有权限;这时候呢我们就可以定义些规则来判断用户权限,下面就是这种设计。

 

6.       涉及资源,权限和规则的权限设计

 


在这种设计下角色的概念已经没有了,只需要
Rule在程序中的类中定义用户是否有操作某种对象的权限。

以上只是分析思路,如果有不对的地方,请大家指正。

请尊重作者的劳动,转载请保留链接 玉开的技术博客  

分享到:
评论
5 楼 liaoshaoyang 2014-11-19  
写的不错嘛 可以做参考
4 楼 liuyun885 2011-12-08  
唉,权限,正在被整……
3 楼 nikytwo 2011-08-03  
第6没说完的吧?
2 楼 spacefly 2009-07-21  
很不错。。。
1 楼 lucane 2009-04-09  
权限都把人给整疯了。。。

相关推荐

    权限管理设计方案(详细设计)

    权限管理设计方案详细设计 权限管理设计方案是为了设计一套具有较强可扩展性的用户认证管理系统,需要建立用户、角色和权限等数据库表,并且建立之间的关系。本设计方案的主要内容包括用户认证管理设计、角色设计、...

    权限管理系统设计方案

    【权限管理系统设计方案】是关于如何构建一个有效管理用户权限的系统的详细文档。权限设计的核心在于理解用户、组、角色和权限这四个基本概念及其相互关系。 1. **权限设计概念** - **权限资源**:权限资源是系统...

    通用权限管理设计篇 权限管理设计

    通用权限管理设计是构建复杂应用系统的关键组成部分,其目的是实现灵活、通用且易于管理的权限控制,以适应不同用户和场景的需求。权限管理涉及到多个核心概念,包括权限、用户、角色和组,它们之间有着复杂的关系。...

    java系统权限管理设计

    "java系统权限管理设计" java系统权限管理设计是指在java系统中实现业务系统中的用户权限管理。权限管理是指对系统操作的权限控制,确保只有经过授权的用户可以访问系统的相关功能。 在设计java系统权限管理时,...

    几种网站权限管理的设计

    权限管理设计涉及如何控制用户访问特定资源、执行操作或获取信息。以下是对几种常见的网站权限管理设计的详细阐述: 1. **角色基础访问控制 (Role-Based Access Control, RBAC)** RBAC 是一种广泛采用的权限管理...

    权限管理设计的一点小心得

    权限管理设计是一项复杂但又至关重要的工作。通过对权限、角色、用户之间的关系进行细致规划,并结合适当的实现技术,可以构建出既安全又灵活的权限管理体系。此外,遵循一些最佳实践也能帮助我们在权限管理的设计和...

    通用权限管理系统设计篇

    "通用权限管理系统设计篇"着重探讨了如何设计一个适用于多种场景、能够处理不同用户和角色权限的系统。在这个主题下,我们将深入理解权限管理的核心概念、设计原则以及实现策略。 一、权限管理基础 权限管理主要...

    基于RBAC权限管理数据库表设计

    总结来说,基于RBAC的权限管理数据库表设计涵盖了角色、权限、用户、角色-权限关联、用户-角色关联等多个核心组件,通过这些组件的组合,可以构建出一个强大且易于维护的权限管理体系。在实际应用中,还可以根据业务...

    角色权限管理设计方案

    本文将深入探讨“角色权限管理设计方案”,基于提供的描述和标签,我们将详细阐述这一主题,以便理解如何有效地设计和实现一个权限控制系统。 首先,我们要明白权限管理的核心目标是确保用户只能访问他们被授权的...

    通用权限管理系统的设计与实现

    然而,文章的摘要部分提供了关于系统设计的目的和优势的更多信息,即通过设计一个通用的权限管理系统,可以使得其他基于Java EE平台的Web应用基于该系统快速进行开发,从而缩短整个项目的开发周期。这一优势体现了...

    权限管理设计

    总之,设计一个有效的权限管理系统涉及到数据库设计、权限分配策略以及权限与用户、角色之间的映射关系。通过这样的设计,业务系统能够确保用户只能执行其被授权的操作,有效地保护了系统的安全性和数据的完整性。

    用户权限管理设计与实现

    在本文中,我们将深入探讨用户权限管理的设计与实现,基于提供的文件名"实现业务系统中的用户权限管理--设计篇.docx"和"实现业务系统中的用户权限管理--实现篇.docx"来解析这一主题。 首先,我们要理解用户权限管理...

    基于角色的权限管理数据库设计

    本文档主要介绍了一种基于角色的权限管理系统(RBAC)的数据库设计方案,并通过具体的SQL脚本实现了该方案的基本功能。RBAC(Role-Based Access Control)是一种常用的安全管理机制,它通过定义不同的角色以及这些...

    详细的权限管理系统设计

    本文将详细介绍如何设计一个详细的权限管理系统,满足大部分 B/S 系统对用户功能权限控制的需求。 首先,权限管理系统应该具备以下几个特点: * 不同职责的人员,对于系统操作的权限应该是不同的。 * 可以对“组”...

    OA权限管理设计的实现

    本文将详细介绍一个面向管理信息系统(MIS)的权限管理设计方案,该方案旨在提高系统的安全性与灵活性,并为网页设计者提供有价值的指导。 #### 二、权限管理的重要性 权限管理的核心作用在于确保不同职责的人员能够...

    权限管理设计方法 权限管理设计方法

    权限管理设计方法 权限管理设计方法 权限管理设计方法 权限管理设计方法 权限管理设计方法

    QT文件云服务系统的权限管理模块设计

    综上所述,QT文件云服务系统的权限管理模块设计是一个涉及用户、角色、权限、继承、审计和安全性的复杂过程。正确实施这些设计元素,将为用户提供安全、便捷的文件存储和访问体验,同时也为管理员提供了强大的控制...

    权限管理系统设计说明书

    本文将详细阐述权限管理系统的设计,包括核心概念、数据模型和功能模块。 首先,权限管理是系统安全的基础,它确保了只有拥有特定权限的用户才能执行特定的操作。在本系统中,权限表(right)用于存储所有权限的...

    一个通用的权限管理模型的设计方案

    在构建一个通用的权限管理模型时,需要考虑多个方面,包括但不限于资源、操作类型、功能权限、数据类型、数据对象、角色、用户以及用户组等。下面详细阐述这些关键知识点。 一、基于角色的访问控制(RBAC) RBAC...

    java权限管理系统数据库设计.pdf

    Java 权限管理系统数据库设计 ...权限管理系统数据库设计是指在 Java 平台下设计和实现的权限管理系统的数据库结构和设计思路,包括数据库表的设计、字段的设计、权限的设计、角色设计、用户设计等方面的内容。

Global site tag (gtag.js) - Google Analytics