`
小杨学JAVA
  • 浏览: 904227 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用户权限管理设计(转)

 
阅读更多

原文:http://www.blogjava.net/DreamAngel/archive/2009/06/26/284337.html
用户权限管理设计

用户管理权限设计一直是大家讨论的热点,因为几乎涉及到每一个开发的业务系统。我找了很多很多的资料,大家的核心基本上都是一样的:基于角色管理. 用户,角色,模块,权限的相互组合,就可以形成一个强大的权限管理系统。

最近在一个项目中设计的一个用户权限的设计,很乐意与大家一起讨论及分享.

设计思路

我的设计思路或者说是我想要实现的功能

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#中的业务实现只是一个取数操作过程。

分享到:
评论

相关推荐

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

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

    权限管理系统设计方案

    - **系统划分**:系统分为五个部分,分别是组权限管理、角色权限管理、用户权限管理、组织管理和操作日志管理。每个部分负责处理特定的权限管理任务,如组权限管理关注于组内用户、角色、权限资源和总权限的管理。 ...

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

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

    用户权限管理模块(C++实现)

    本项目"用户权限管理模块(C++实现)"是一个用C++编程语言实现的权限管理解决方案,它包含了几个核心功能,如单例模式、用户区分、用户管理以及密码安全存储。 首先,我们来深入理解C++实现的用户权限管理模块。C++...

    用户权限管理模块设计

    "用户权限管理模块设计" 在现代企业中,用户权限管理模块设计是一项非常重要的任务。随着企业的发展和业务的扩展,用户权限管理模块的设计变得越来越复杂。因此,我们需要设计一个详细、结构合理、易扩展的用户权限...

    用户权限管理系统 ppt

    用户权限管理系统,是PPT,可以了解用户权限管理系统的设计。仅供学习。

    用户权限管理设计与实现

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

    用户认证管理权限设计方案

    **用户权限管理**: - **创建权限**:系统管理员(Administrator)可以创建新的权限,如查看权限、修改权限等,并记录权限的名称和描述。 - **分配角色与权限**:管理员可以为用户分配角色,以及为角色添加或移除...

    用户权限管理设计方案

    综上所述,用户权限管理设计方案涉及数据库表结构设计、权限模型选择、权限管理策略以及用户体验优化等多个方面。对于初学者来说,理解这些基本概念并能实际应用,将有助于构建出安全可靠的多用户系统。

    ASP.NET系统用户权限设计与实现

    ASP.NET 系统用户权限设计与实现 ASP.NET 系统用户权限设计与实现是指在 ASP.NET 系统中设计和实现用户权限控制的机制,以满足电子商务系统对安全性的要求。该机制基于 RBAC(Role-Based Access Control,基于角色...

    用户权限管理数据库设计

    用户权限管理是IT系统设计中的核心部分,尤其是在大型企业或互联网应用中,它的重要性不言而喻。这一主题涉及到如何确保只有授权的用户才能访问特定的资源,同时也要保证系统的安全性和稳定性。以下是对用户权限管理...

    用户权限管理菜单 用户权限管理菜单 用户权限管理菜单

    综上所述,用户权限管理菜单的设计和实现是一个涉及多方面考虑的过程,包括角色定义、权限划分、权限分配、权限控制和审计等。在商业级软件中,这些功能的完善程度直接影响到系统的安全性、稳定性和用户体验。通过...

    JAVA用户权限管理概要设计说明书-外发版

    这份“JAVA用户权限管理概要设计说明书-外发版”很可能提供了关于如何在Java应用程序中实施用户权限控制的全面指导。下面我们将深入探讨这个主题。 首先,用户权限管理的核心是身份验证(Authentication)和授权...

    用户权限管理系统 源代码和设计报告

    用户权限管理系统是IT行业中至关重要的一个模块,它用于管理和控制用户对系统资源的访问权限,确保数据的安全性和系统的稳定性。本项目使用了PHP、MySQL、Apache和QeePHP框架,这些技术的组合提供了高效且灵活的后台...

    java系统权限管理设计

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

    一个用户权限管理模块的设计思路

    下面将详细阐述一个用户权限管理模块的设计思路。 首先,我们要明确权限资源,即功能资源。这些资源是系统内所有可以被赋予权限的操作或功能,它们通常构成一个层次结构,如系统管理、单位管理、查看和修改单位等。...

    用户权限管理详细设计与实现

    用户权限管理详细设计与实现 用户权限管理是业务系统中的一个重要组件,旨在控制用户对系统资源的访问权限。根据需求,一个良好的权限管理系统应该具备以下特点: 1. 不同职责的人员,对于系统操作的权限应该是...

    实现业务系统中的用户权限管理--设计篇

    本文将深入探讨用户权限管理的设计原理、常见模型以及实施策略。 一、用户权限管理概述 用户权限管理是业务系统中控制用户访问资源的一种机制,其核心目标是根据用户的角色和职责,合理分配对系统功能和数据的访问...

    c#用户权限管理实现

    在IT行业中,用户权限管理是系统安全的重要组成部分,尤其是在企业级应用中,它涉及到数据保护、操作合规性和责任追溯。本项目"用户权限管理实现"是基于C#编程语言和Visual Studio 2010开发环境构建的,旨在提供一个...

    用户权限设计方案

    用户权限设计方案 用户权限设计方案是指通过建立用户、角色和权限等数据库表,并且建立之间的关系来实现用户认证管理的设计方案。该方案的主要目的是为了提供一种具有较强可扩展性的用户认证管理系统,能够满足不同...

Global site tag (gtag.js) - Google Analytics