用户管理权限设计一直是大家讨论的热点,因为几乎涉及到每一个开发的业务系统。我找了很多很多的资料,大家的核心基本上都是一样的:基于角色管理. 用户,角色,模块,权限的相互组合,就可以形成一个强大的权限管理系统。
最近在一个项目中设计的一个用户权限的设计,很乐意与大家一起讨论及分享.
设计思路
我的设计思路或者说是我想要实现的功能
1.用户的权限通过角色来控制,一个用户可以拥有多个角色.
2.用户拥有不同角色时,其权限应该是多个角色相互的补集.
3.一个角色拥有多个模块
4.用户的前台菜单显示根据角色所拥有的模块所决定,不同的用户在前端显示的操作菜单是不一样的。
5.页面中的功能按钮根据模块中所包含的功能所定义,通过模块及角色所拥有的权限进行控制
6.可看某个模块有哪些用户,哪些对应角色,并对其进行特殊权限设置.
7.可以针对单个用户进行特殊设置
我在我的Project中,基本上达到了以上的效果及功能,但在实际过程中发现有些不足之处。因为整个权限设计是基于数据库来设计中,所以数据的读取当数据量大时(我所说的数据量是以万以上来计)可能对性能有一定的影响。但对于一般来说,几千用户之类的我想还是可以承受的。我会在后面说明不足之处。
数据库设计
基本设计:
1.首先,设计数据库.
数据库的设计其实我估计大家都很熟悉了
基本表:用户表,角色表,模块表,功能表,管理员表.如果涉及到企业性质的,可能会根据需要加上组织结构表,群组表等其它辅助表
用户
管理员
角色
模块
(我的模块表考虑了子模块的因素,所以会有深度,父模块ID这两个字段,在后来开发过中,由于思路的转变,IsRootModule,FunctionCode我都没有用到,为了让整个权限系统通变得更通用,我都将其单独设计成了另一个表)
功能表(功能表就是模块对应的功能:增加,删除,修改,详细,列表,浏览,导出,导入之类的)
业务表:用户-角色表 模块-功能表 角色-模块表
要实现一个用户多个角色(1 to n),一个角色多个模块(1 to n),一个模块多个功能(1 to n),那就得加上几个相关的业务表,之前考虑用视图去实现,我个人之见,视图最好只用来读取数据,不要用来进行数据操作.后来证明是不可取的,这里要注意的就是在实际的业务操作中,应该尽量避免重复的数据录入. 这些表都很简单,但却很关键
用户-角色:
角色-模块:
模块-功能:
大家可以看到,表结构很简单,字段也很少,设计也差不多。都是将相关联的字段ID取出来做数据存取。
视图:用户-角色-模块-功能视图
可能大家会觉得很奇怪,为什么这里出现member_role呢。因为我们在数据表中只存取了ID值,而对应的RoleName字段并没有包含其中,这里的视图就是获取关联表中其他所需要的字段数据了。另外两个视图大家看名字应该就知道他的用处了。
存储过程:各自表的增加,删除,修改,及列表数据. 判断是否存在相同的数据
(CUDLIS-Create, Update,Delete,IfExist,Show,List)
存储过程我就不一一列出了,很简单的,你只要写出下面这些基本上你在开发过程就不会有太多问题了. 注意的是:在相互关联的业务表中,最好能对数据插入进行重复数据判断(用户角色表,模块功能表,角色模块表,尽量避免重复的数据插入)我把大致需要实现的业务列个表给大家参考:
用户表:(Insert ,Update ,IfExist ,Show, Delete)
用户角色表:(Insert ,Update,IfExist,Delete,RoleListByUserID,UserListByRoleID)
角色表:(Insert,Update,IfExist,Show,Delete)
角色模块表:(Insert,IfExist,Delete,Show,RoleListByModuleID,ModulistByRoleID)
模块表:(Insert,Update,IfExist,Show,Dlete,ListByRootModuleID,ListByModuleLevel)
模块功能表:(Insert,Update,Delete,FunctionListByModuleID)
针对用户直接获取其所有的权限时,应该有个单独的Procedure从视图中Member_Role_Module_Function中获取其对应的数据,这样就可以得到想要的东西了。
数据库设计部分应该就这样差不多了。我想这应该是通用的。在实际运用过程中,我个人认为应该有一些改进点:
1.模块与功能部分,可以用字符串的形式将模块对应的功能存在一个数据字段中,这样可能在你的代码编写中可以省下较多的时间并带来更多的便利(主要是可以用split()来代替频繁的数据获取业务)这个我在最初设计中没有想到这点,有点失策.
2.针对N级模块的权限展现问题,如何让父模块继承子模块的权限这个是我没有考虑到的,不过我想应该可以用IsRootModule这个字段来作文章,可惜我还没想到如何去整这个字段。当子模块很多时,在前端UI展示的时候是否会出现很慢的情况?这个我没有去做测试,带有一定的风险。
但在前端UI展示我还没想到或实现好的办法,我能想到的应该是像GridViewTree那种不错。
这个权限设计已经在我的Project中运用,暂时没有发现什么问题,而且为我以后对其它系统集成也很有帮助。至于如何在C#中实现业务,个人认为只要知道数据库如何整的,那C#中的业务实现只是一个取数操作过程。
分享到:
相关推荐
本文将深入探讨用户权限管理的设计原理、常见模型以及实施策略。 一、用户权限管理概述 用户权限管理是业务系统中控制用户访问资源的一种机制,其核心目标是根据用户的角色和职责,合理分配对系统功能和数据的访问...
"实现业务系统中的用户权限管理--设计篇" 在本篇文章中,我们将讨论如何设计一个完整的权限管理系统,以满足业务系统中的用户权限管理需求。权限管理系统是业务系统中不可或缺的一部分,它决定了用户对系统的访问...
- **系统划分**:系统分为五个部分,分别是组权限管理、角色权限管理、用户权限管理、组织管理和操作日志管理。每个部分负责处理特定的权限管理任务,如组权限管理关注于组内用户、角色、权限资源和总权限的管理。 ...
在本文中,我们将深入探讨用户权限管理的设计与实现,基于提供的文件名"实现业务系统中的用户权限管理--设计篇.docx"和"实现业务系统中的用户权限管理--实现篇.docx"来解析这一主题。 首先,我们要理解用户权限管理...
这份“JAVA用户权限管理概要设计说明书-外发版”很可能提供了关于如何在Java应用程序中实施用户权限控制的全面指导。下面我们将深入探讨这个主题。 首先,用户权限管理的核心是身份验证(Authentication)和授权...
**用户权限管理**: - **创建权限**:系统管理员(Administrator)可以创建新的权限,如查看权限、修改权限等,并记录权限的名称和描述。 - **分配角色与权限**:管理员可以为用户分配角色,以及为角色添加或移除...
用户权限管理是IT系统设计中的核心部分,尤其是在大型企业或互联网应用中,它的重要性不言而喻。这一主题涉及到如何确保只有授权的用户才能访问特定的资源,同时也要保证系统的安全性和稳定性。以下是对用户权限管理...
综上所述,用户权限管理菜单的设计和实现是一个涉及多方面考虑的过程,包括角色定义、权限划分、权限分配、权限控制和审计等。在商业级软件中,这些功能的完善程度直接影响到系统的安全性、稳定性和用户体验。通过...
用户权限管理系统是IT行业中至关重要的一个模块,它用于管理和控制用户对系统资源的访问权限,确保数据的安全性和系统的稳定性。本项目使用了PHP、MySQL、Apache和QeePHP框架,这些技术的组合提供了高效且灵活的后台...
在基于角色的权限管理系统中,除了上述的基本表之外,还需要设计一些关联表来表示实体之间的关系,如用户与角色的关系、角色与权限的关系等。 ##### 用户与角色关联表 (RBAC_User_Role) 此表用于记录用户所拥有的...
在IT行业中,用户权限管理是系统安全的重要组成部分,尤其是在企业级应用中,它涉及到数据保护、操作合规性和责任追溯。本项目"用户权限管理实现"是基于C#编程语言和Visual Studio 2010开发环境构建的,旨在提供一个...
### 应用程序权限设计-权限的控制程度不同的设计方案 #### 一、引言 在软件开发过程中,权限管理是一项至关重要的任务。合理的权限设计不仅可以保障系统的安全性,还能提升用户体验,确保不同用户群体能够访问他们...
以上设计涵盖了用户权限管理的主要方面,确保了系统能够有效地控制用户访问权限,同时也为系统的扩展和维护提供了便利。通过合理的权限设计,可以确保每个用户只能访问其被授权的资源,从而保护系统安全,提升用户...
项目概述:基于Python的Flask框架开发的权限管理系统,全面涵盖用户、角色、资源和机构的管理功能。该项目采用CSS、HTML、JavaScript、Python及PHP多语言编写,共有2432个文件,其中包括丰富的静态资源与逻辑代码。...
### 通用权限管理系统文档资料——设计扩展RBAC用户角色 #### RBAC模型概述 RBAC(Role-Based Access Control,基于角色的访问控制)是一种广泛应用于软件系统中的权限管理方法。在这一模型中,用户不再直接与权限...
良好的权限管理设计不仅能确保系统的安全性,还能提升用户体验,使系统的管理和维护变得更加高效。 #### 定义权限 在设计权限管理系统时,首先需要明确的是“权限”本身的概念。权限通常可以分为两大类:**操作...
### OA系统权限管理设计方案 #### 一、引言 随着企业规模的不断扩大和技术的发展,办公自动化(OA)系统已经成为提高工作效率、规范管理流程的重要工具。权限管理作为OA系统中的核心功能之一,对于确保数据安全、...
用户权限设计方案 用户权限设计方案是指通过建立用户、角色和权限等数据库表,并且建立之间的关系来实现用户认证管理的设计方案。该方案的主要目的是为了提供一种具有较强可扩展性的用户认证管理系统,能够满足不同...
总结来说,基于RBAC的权限管理数据库表设计涵盖了角色、权限、用户、角色-权限关联、用户-角色关联等多个核心组件,通过这些组件的组合,可以构建出一个强大且易于维护的权限管理体系。在实际应用中,还可以根据业务...
"permission-manager-v1.6.0"是一个专为K8S设计的用户权限管理工具,它帮助管理员更好地控制和管理用户对Kubernetes资源的访问。本文将深入探讨该工具的工作原理、功能特点以及如何在实际环境中应用。 首先,了解K8...