`
wuxiaozeng2440
  • 浏览: 27271 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用户管理设计

 
阅读更多

下图是版本一。

 

 

 

1. 权限:Privilege

权限应具有上下级关系,也就是管理级别。下面通过例子来说明

系统管理

      用户管理

          查看用户

          新增用户

                修改用户

                删除用户

我把权限细分为三种类型,”角色权限“,组织权限,“一般权限”,我没有写成继承,而是用了一个枚举属性,因为我觉得他们没有明显的继承关系。

 

2. 角色Role

我觉得角色也可以有上下级关系,那样父角色就能拥有子角色的所有权限。但为了简单起见,没那么设计,树形结构不好维护。

 

3. 组织OrganizationUnit

组织就是一堆用户的分类。组织也具有上下级关系。

如果要做的通用,我觉得用户和组织之间应该是多对多的关系。

我是这么考虑的:例如我属于技术部,也属于北京分公司,也属于某个总公司。如果是多对一,那我是放在哪个组织下面好呢。当然应该放在技术部下面。如果要查询北京分公司下所有技术部的用户,还得首先知道这两个组织之间有几个父子关系。

 

4. 用户User

用户可以拥有多个权限,可以归属于多个角色,可属于多个组织。他的权限集是自身具有的权限、所属的各角色具有的权限、所属的各组织具有的权限的合集。

 

下图是版本二



 

 

 

1. 权限Privilege

权限有名称,描述,类型三个属性。

2. 角色Role

角色是权限的聚合。有名称,描述,两个属性。

3. 组织OrganizationUnit

组织就是一堆用户的聚合。组织也具有上下级关系,是树形结构。

4. 用户User

用户可以有多个角色,属于一个组织,并有一个管理组织,默认为当前组织。

 

比较:

 

下面开始说明为什么版本二比版本一好很多。首先设计的原则是简单通用。越简单当然会越通用。版本二看起来比版本一简单很多。也比较直观,权限聚合成角色,角色聚合成用户,用户聚合成组织。组织有上下级关系。

 

关于权限。权限是一个独立的个体。可以单独存在。角色包含权限,而不应该是权限包含角色。组织和权限不应该关联,这样关联后系统会很复杂,可以在用户里加一个属性managerOrgnization来解决问题。另外权限不用设计成树形结构。树形结构只会让系统越来越复杂。而且一组权限的parent可以理解成某个角色。

 

关于角色。角色是权限的聚合。

 

关于组织。这个很好理解。企业系统里必然会有上下级别的关系,为什么其他三个model没有设计成树形,而在这把OrganizationUnit设计成树形。从上面的聚合箭头可以看出,最终聚合到OrganizationUnit这。中间任何地方设计成树形结构都只会增加系统的复杂度。

 

关于用户。用户不用设计成树形结构,应该用户所属的组织已经有了树形。另外用户不应该直接和权限关联。当然某些特殊的系统需要把权限分配到用户上。那只在某些权限比较分散的系统里,而且权限没有像样的分组,那才需要把权限分配到用户,比如maven私服,svn。否则把权限分配到角色,在有个管理组织属性,基本就能满足大部分需求了。

 

 

  • 大小: 39.7 KB
  • 大小: 25.2 KB
分享到:
评论

相关推荐

    银行账户管理系统设计

    银行账户管理系统设计是一个复杂而严谨的过程,涉及到许多关键的技术知识点。在设计这样一个系统时,我们需要考虑安全性、稳定性、效率和用户友好性等多个方面。以下是一些相关的重要知识点: 1. **数据库管理**:...

    多功能IP代理服务器的用户管理设计与安全策略.pdf

    【标题】:多功能IP代理服务器的用户管理设计与安全策略 【描述】:本文主要讨论了IP代理服务器在解决IP地址资源紧张问题中的作用,以及它在用户管理和安全性方面所面临的问题。文章深入剖析了IP代理服务器的工作...

    C#课程设计-用户管理系统(源码+数据库).zip

    《C#用户管理系统详解——基于课程设计的实践与学习指南》 C#,作为微软公司推出的面向对象的编程语言,以其高效、易学、强大的.NET框架支持,深受开发者喜爱。在IT领域,尤其是在Windows平台的应用开发中,C#的...

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

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

    C++ 课程设计银行账户管理程序系统+源代码+文档说明+设计报告

    设计一个银行账户管理程序,账户的信息有账号(唯一)、姓名、余额、身份证号码、单位、电话号码、地址、开户日期、销户日期等。 功能要求: 设计菜单实现功能选择; 能增加、修改和删除账户信息; 允许用户进行...

    用户权限管理模块设计

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

    银行账户结算管理系统毕业设计开题报告

    银行账户结算管理系统毕业设计开题报告一枚

    银行账户管理系统的设计与实现 开题报告

    《银行账户管理系统的设计与实现 开题报告》 一、课题的意义 银行账户管理系统的设计与实现是信息化时代银行提升服务质量与管理水平的重要手段。随着计算机技术的普及,传统的手工管理方式已经无法满足银行账户...

    用户中心-后台管理系统原型设计

    附件为用户中心-后台管理系统原型设计,Axure RP原型设计文件文档

    学生社团管理系统概要设计说明书

    基本设计概念和处理流程是学生社团管理系统的设计思路和实现方法,包括用户接口、外部接口、内部接口等方面。 6. 接口设计 接口设计是学生社团管理系统的重要组成部分,包括用户接口、外部接口、内部接口等方面。 ...

    python 课程设计-银行账户管理系统源码.py

    完整的Python银行账户管理系统,包括新建账户、查询、更新、存款、转账、取款、注销 采用csv存储信息

    毕业设计基于springboot的校园快递驿站管理系统的设计与实现项目源码.zip

    进后台管理,添加一个学生后会同时生成小程序端的账户。账号为他的手机号,密码默认123456 主页 远程打印服务 ​获取常印文件列表 上传文件,并打印 主要技术 Java语言 springboot框架 Vue框架 MySQL数据库 ...

    教务管理系统概要设计和详细设计说明书

    本说明书主要涵盖了教务管理系统的概要设计和详细设计两个关键阶段,旨在为软件工程的学习者提供一套完整的系统开发流程。 概要设计阶段是软件开发的早期阶段,其主要目标是确定系统的整体架构和主要功能模块。在...

    个人账户管理 数据结构课程设计

    综上所述,这个数据结构课程设计项目不仅涵盖了基础的搜索算法,还涉及了数据结构选择、安全性、数据一致性以及用户交互等多个方面,为实现一个完整的个人账户管理系统奠定了基础。通过这样的实践,学生可以深入理解...

    Linux+shell编程课程设计——Linux用户管理的shell程序设计

    在用户管理脚本中,我们需要确保新创建的用户账户具有适当的权限。 5. **用户和用户组**:Linux系统中的用户被组织成用户组。`groupadd`用于创建新组,`usermod -a -G`可以将用户加入到指定的组,`gpasswd`则用于...

    数据库课程设计报告银行管理系统.docx

    - **功能需求**:用户管理需支持用户的新建和删除,账户操作需展示账户基本信息、活期余额和定期账单,以及记录和查询存取款操作。 - **数据需求**:定义了账户信息、活期存款和取款、定期存款和取款的数据结构,...

    个人账户管理系统-JAVA

    在这个系统中,可能包含了用户账户信息、交易记录、账户余额等表,通过精心设计的数据模型,确保了数据的一致性和完整性。数据库设计遵循了正常化原则,以减少数据冗余并提高数据操作效率。 其次,JAVA作为后端开发...

    教务管理系统 数据库设计

    教务管理系统的数据库设计是一个复杂但至关重要的过程,它直接影响到系统的稳定运行和用户体验。通过详细的需求分析、事务需求分析、概念设计、逻辑设计以及物理设计等步骤,可以确保最终设计出的数据库既能满足当前...

    涉密系统设计解决方案 三员管理.docx

    他们负责用户账户的增删,数据备份,运行日志的审查和监控,以及在紧急情况下的系统安全恢复。系统管理员需确保所有操作在严格的监管下进行,避免对业务数据的不当访问或修改。 安全保密管理员则专注于系统的安全...

    用户管理 labview 登陆界面设计

    3. **用户管理**:用户管理涉及到用户账户的创建、删除和修改。在LabVIEW中,这可能需要使用数据存储结构,如数组或簇,来保存用户信息,如用户名和加密后的密码。用户信息通常存储在数据库或文件系统中,以便持久化...

Global site tag (gtag.js) - Google Analytics