基于RBAC模型的权限管理系统

一,系统概述

基于RBAC模型的权限管理系统,不同的用户拥有不同的功能界面、不同的业务权限.从项目角度来描述就是不同的用户拥有不同的角色,不同的角色绑定了不同的功能模块,并且要保证用户不能操作权限之外的功能。基于这样的出发点可以考虑建立一套多用户、多角色、多种功能、用户<–>角色<–>菜单灵活绑定的系统。

‘基于角色的权限访问控制’(Role-Based Access Control),简称为RBAC。RBAC支持三个著名的安全原则:最小权限原则,责任分离原则和数据抽象原则。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。

二,开发环境

Java版本:1.8
数据库:MySQL
框架:Spring + Spring MVC + MyBatis
服务器:Tomcat
前端框架:Easyui
开发工具:Eclipse
版本管理工具:Maven
版本控制工具:Svn

三,系统功能

系统结构图

功能要求

用户登陆分为:系统管理员登陆和普通用户登陆。

  1. 系统管理员登陆为此权限系统

     2.普通用户登陆则显示此用户所有的权限菜单

提示:登陆使用员工号+密码验证,同时提供错误页面提示,和验证次数限制,提供登陆者信息保存。

菜单管理功能实现的是项目与菜单之间的对应关系,一个项目可以对应多个菜单,一个菜单也也以与多个项目相对应的多对多关系。

该模块实现的功能有:

    1.给项目分配新的菜单:给项目添加新的菜单,给项目增加新的功能。

    2.取消项目的某些菜单:取消项目的某些菜单,减少项目所具有的功能。

    3.修改项目的某些菜单:修改因某些原因导致的菜单与功能不匹配的问题。

    4.查询项目的菜单:查询该项目所具有的菜单项。

    5.判断项目是否启用:当项目停用时,该项目下的菜单不能使用。

角色管理模块就是对系统的角色进行管理:增加,停用,修改,查询。

    1.往本系统内增加角色。

    2.对已存在的角色进行查询操作。

    3.对已存在的角色进行修改操作。

    4.对已存在的角色进行停用操作。

系统登陆流程示意图

 

菜单管理流程示意图

角色管理流程示意图

角色菜单流程图

四,数据库表设计 

为了方便管理,每个程序对象都集中实现相关的一组管理功能,实现一个程序对象的数据管理功能。本系统所有的应用都是围绕数据库来进行的。在数据库中都有一组表存储管理的数据对象的数据。数据库设计与整个程序的实现有重要的关系。因此,需要制定统一的数据库设计规范,以配合程序设计,以及方便管理和维护。这是下面的数据库设计规则:

  1. 表名的设计。数据库表名与程序名一致,一一对应,对于JAVA程序对象中的"."转换到数据库中就是"_"。假定有一程序,mis.mis1.class,则对应表名为mis_mis1,如果,还有子表,则以_a、_b等作为后缀扩展,如mis_mis1_a、mis_mis1_b等,对于流程相关的程序对象可以加_1、_2、_3等后缀,每个流程的子表可以以后缀表示为_1_a、_1_b表示;
  2. PK的设计。每个表都有一个字段ID,类型为int,其由公共程序产生,与数据无关,仅仅标志一个独立的数据记录,ID字段为该表的PK。这里需要特别声明的是 PK 字段还有一个重要的作用,就是它的业务无关性,所有 PK 字段在业务程序实现过程中始终不需要在交互界面上表示出来,这样可以保证了数据的可维护性,也保证了系统的坚固性;
  3. 子表的设计。根据数据字段属性的多少和功能,可以划分为若干子表,每个子表与主表通过ID字段建立关联,统一构成一条独立的数据记录,如果主表与子表为一对多关系,则在子表中增加一个字段SEQ,在子表中ID+SEQ字段构成子表的PK,子表中的ID字段通过FK关联主表的ID字段;
  4. UK的设计。根据业务功能需要,对主表或者子表中的业务相关字段,设计UK,通过设计UK严格实现业务应用中唯一性的要求,UK也是将来规划查询实现的线索字段;
  5. FK的设计。外键设计可以用外键字段关联的目的表的表名后加_id后缀实现。这样,可以从数据库表结构中一目了然地了解数据之间的关联,这样也符合面向对象的思维习惯,比如某个表中有字段mis1_id,表示该字段外键关联到mis1表的ID字段,只要将字符“_”读为“的”就行,这里“_”相对于面向对象中常见的符号“.”。
  6. NULL属性的设计。对于业务上必须要求填写的内容,对应的字段为NOT NULL,对于可以不必填写的字段,设置为NULL。
  7. 设计文档格式-“表名 | 主/外键 | 字段 | 类型 | NULL? | 字段说明”,表名和字段名采用英文单词,可以适当采用缩写。
  8. 表名和字段名称采用英文单词书写,建议采用小写字母。如果字段由多个单词组合,则第一个单词大写,后面单词的第一个字母小写。
  9. 系统核心表以下划线“_”为前缀,其他应用表名的各个单词第一个字母可以大写开始

上面的关于表的设计规则也是与程序设计相配合的,因为这样设计,只要知道程序的名字,如mis.mis1.class就知道其管理的数据在以“mis_mis1”开头的一系列表中,就能将程序和数据很快定位,而每个独一无二的ID表示一个记录,程序就是管理这个数据对象集合(collection)的。这样也是大大方便程序开发、管理、维护的。当然,在实际开发中,对于特殊的系统管理程序,也可以根据设计需要灵活设计数据库结构,但是,建议业务性质的数据表设计最好采用上述规则,这是对整个系统是有益的。

E-R图

这里写图片描述

user:用户表用于存放用户基础数据
这里写图片描述

role:角色表用户存放角色名称
这里写图片描述

user-role:用户角色表,存放用户表id河角色表id,一个用户id可能会对应多个角色id,如果使用数据量很大,建议对两个id字段做索引
这里写图片描述
menu:菜单表用户存放所有功能菜单,包含菜单名称、链接、标签、父级id、菜单等级等数据,因为菜单数据要在权限设定时做展示,所以数据要设计为输结构,方便加载和筛选
这里写图片描述
role-menu:角色菜单表用户存放角色id和菜单id的关联关系,同样一个角色id可能会对应多个菜单id,数据量大的情况下建议对两个id字段做索引
这里写图片描述

五,系统展示

六,总结

      本文论述了一种基于RBAC的权限管理系统的实现技术方案。该权限管理系统已成功应用于教师测评系统的设计和开发实践,与教师测评系统具有很好的集成。实践表明,采用基于RBAC模型的权限管理系统具有以下优势:由于角色/权限之间的变化比角色/用户关系之间的变化相对要慢得多,减小了授权管理的复杂性,降低管理开销;而且能够灵活地支持应用系统的安全策略,并对应用系统的变化有很大的伸缩性;在操作上,权限分配直观、容易理解,便于使用;分级权限适合分层的用户级形式;重用性强。 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RBAC(Role-Based Access Control)是一种权限管理模型,它是建立在角色的基础上,将用户分配给角色,再根据角色权限授予对应的资源访问权限。这种模型可以有效地管理大规模应用系统中的权限问题。下面是基于RBAC权限管理系统的设计分析: 1.确定系统需求:首先要确定系统的具体需求和功能,包括用户界面、权限设置和管理角色管理、资源管理等方面。同时需要明确系统的主要目标是什么,以便在设计时保持一致性。 2.确定角色:根据系统需求,确定所需要的角色类型和数量,包括系统管理员、普通用户等。在设计时应该合理分配权限,避免角色权限重叠或漏洞。 3.确定资源:确定系统中的资源,包括数据、程序、文档等,依据资源的重要性和保密性进行分类,在角色分配时考虑资源所属角色权限。 4.权限授予:根据角色的不同,授予对应的资源访问权限,包括读取、修改、删除等。在授予权限时要严格按照角色权限定义进行操作,避免数据泄漏和滥用。 5.权限审核:对所有权限的修改和删除操作进行记录和审查,定期对权限进行审核,保证系统的安全性和稳定性。 6.权限维护:系统上线后,需要对权限进行维护和更新,包括新增角色、修改权限、删除角色等操作,同时定期对系统进行安全检查和修复漏洞。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值