基于角色的通用权限管理子系统

本文主要研究了信息管理系统(Information Management System,MIS)中权限控制问题。首先,分析了国内外权限管理系统(Access Control System, ACS)的发展现状,发现市场上没有将权限管理系统作为独立产品进行销售的软件厂商,几乎所有ACS都是代码级嵌入在业务系统中。因此,本文研究、设计并开发一个“基于角色的通用权限管理子系统”。系统中采用了基于角色的访问控制方法,分析了ACS中的对象关系,定义了权限相关的术语,描述了权限管理子系统的应用场景,基于场景提出了权限管理子系统要解决的主要问题,包括角色划分、作用对象划分以及ACS与其他业务子系统的连接。在此基础上,完成了权限管理子系统的软件架构设计、用例图绘制、用例说明编写、时序图绘制、网络拓扑结构设计和数据库设计;本文分析了设计过程中遇到的难点,着重讲解了权限管理子系统的权限解析算法。最后,展示了ACS在信息管理系统中的应用实例。本文设计的ACS可以按照约定的规范与其他信息管理系统对接,提供权限控制服务;对软件企业而言,使用权限子系统管理,可以直接降低企业成本、缩短项目周期、便于软件升级和减小维护成本。

进身份界面,输入正确的管理员账号和密码,然后点击登陆

登陆成功后可以看到欢迎页,欢迎页显示了权限系统的流程图,介绍了配置步凑;

首先是添加用户。先点击左侧菜单中的用户管理,然后在弹出的窗口中点击添加

在表单中填写完整用户信息,然后点击保存按钮

保存成功后可以在列表中看到该用户,接下来添加角色,在左侧菜单中点击角色管理

在工具栏找到绿色的添加按钮并点击打开添加角色页面

在表单中填写完整角色信息,然后点击保存按钮

保存成功后可以在列表中看到该角色,接下来添加菜单,在左侧菜单中点击菜单管理

在工具栏找到绿色的添加按钮并点击打开添加菜单页面

在表单中填写完整菜单信息,然后点击保存按钮

保存成功后可以在列表中看到该菜单(父菜单为MRoot表示该菜单是根菜单),接下来为该菜单添加子菜单,在操作栏中点击查看孩子

这个页面显示的是该菜单的所有子菜单,因为是新添加的根菜单,所以子菜单为空,接下来在工具栏找到绿色的添加按钮并点击打开添加子菜单的页面

添加根菜单和添加子菜单操作基本相同,在表单中填写完整子菜单信息,其中指向网址填写网页的相对地址(完整url不包含域名的部分),层级填写2,然后点击保存按钮

保存成功后可以在列表中看到刚才添加的子菜单,接下来为该菜单添加按钮,在操作栏中点击分配按钮

这个页面显示的是该归属该菜单的所有按钮,因为是新添加的子菜单,所以按钮为空,接下来在工具栏找到绿色的添加按钮并点击打开添加按钮的页面

在表单中填写完整的按钮信息,然后点击保存按钮

保存成功后可以在列表中看到刚才添加的按钮,接下来进行组织机构的管理,在左侧菜单中点击机构管理

在工具栏找到绿色的添加按钮并点击打开添加组织机构的页面,在打开的页面中填写相应的信息即可完成组织机构的添加,同理可完成岗位添加。

基础数据的准备就做好了,接下来进行权限的配置。首先是给角色分配菜单;然后是给角色禁用按钮;接着是给用户分配角色;最后是给用户分配机构。

点击左侧菜单栏的角色管理出现角色列表,然后在操作列中点击分配菜单为奖学金管理员分配菜单

这个页面显示的是对该角色开放的的所有菜单,因为该角色是新添加的角色,还没有为该角色设置菜单,所以列表为空,接下来在工具栏找到绿色的添加按钮并点击添加按钮

由于菜单很多,可以在在输入框中输入关键词进行过滤,过滤后找到目标菜单,然后点击选择,如下图

这个页面可以对菜单进行简单的配置,如果选错了菜单可以点击’重新选择菜单’进行重新选取,菜单的分配策略默认是不分配子菜单的,如果想为该角色开放该菜单的所有子菜单,则将’是否包含子菜单’设置为‘是’

保存成功后可以在列表中看到刚才为该角色分配的菜单,接下来为角色配置禁用按钮,在左侧菜单中点击角色管理

在操作列中点击禁用按钮

这个页面显示的是对该角色禁用的的所有按钮,因为该角色是新添加的角色,还没有为该角色设置菜单配置过禁用菜单,所以列表为空,之所以采用禁用策略,是因为普遍情况下,每个页面的按钮有90%以上都是开放给用户的,只有余下不到10%的按钮(比如删除,通过审核等比较高权限的按钮)。有可能有读者会想到通过为管理员和普通用户分别编写页面来实现按钮的控制,这样就不需要配置页面的按钮权限了。这个方案我有考虑过,但是没采用,因为软件工程的思想是提倡代码复用,通过把多个界面放到一起,然后通过权限配置的方式实现是是更好的方式,因为如果需求有变动,只需要通过配置,而不需要改动代码或重新编译项目。 需要接下来在工具栏找到绿色的添加按钮并点击添加按钮

在工具栏点击绿色的添加按钮

这个页面可以对按钮进行简单的配置,如果选错了按钮可以点击’选择禁用按钮’进行重新选取,确认无误可以点击保存

保存成功后可以在列表中看到刚才为该角色禁用的菜单,为了保持良好的可读性,建议将按钮编号设置为菜单编号+按钮名称

接着给用户分配角色,点击左侧菜单栏的用户管理,由于用户众多,输入关键词进行筛选,寻找到目标用户,点击操作列的分配角色

这个页面显示的是为该用户赋予的所有角色,因为该用户是新添加的用户,还没有为该角色分配指派赋予角色,所以列表为空,接下来在工具栏找到绿色的添加按钮并点击添加按钮

输入关键词过滤,找到要添加的菜单然后点击操作列的选择

确认无误后点击保存

使用wangwu的账号登陆系统,登陆成功后可以看到王五已经拥有了奖学金管理的权限

使用wangwu的账号登陆系统,登陆成功后可以看到王五已经拥有了奖学金管理的权限

点击左侧菜单栏的待审核列表可以看到,学生列表中出现了计算机学院和化工学院的学生,但是,并且不但拥有审核通过的权限还有删除的权限,而实际的情况是张三是计算机学院刚来的兼职辅导员,他只能看到计算机学院的学生的申请信息,并且不具备审核审核通过的权限

为了解决上述问题,接下来进行最后一步,最后是为用户指派组织机构,之所以采用直接给用户分配机构而不是通过给用户指派岗位的方式来确定机构,是因为业务系统中部分个体不好归纳到岗位中,我们可以将一个教师放置到计算机学院下的讲师岗位,但是不应该将一个学生放置到计算机学院的学生岗位,这样在现实生活中的逻辑说不通,就会导致让用户很难理解,加大系统的使用难道。简言之:用户一定属于某个组织,但不一定在某个岗位!

点击左侧菜单栏的用户管理,由于用户众多,输入关键词进行筛选,寻找到目标用户,点击操作列的指派机构,在打开的界面中选择要添加的机构点击确认即可完成组织机构的指派!

我们通过以上步骤完成了数据域的配置,接下来再次使用wangwu登陆系统,再次打开待审核列表,如下图所示,可以看到权限系统的配置已经生效了,现在王五只能看到本学院的学生列表,并且不具有审核通过的权限

给学弟学妹的建议

1.首先,要找到自己喜欢的方向,可以是手机app开发、网站开发、游戏制作等,在低年级时多尝试,最后确定自己喜欢的方向,然后坚持下去。

2.第二,在自学过程中不要遇到问题就退缩,可以组建一个小团队,让团队一起解决的问题。

3.最后,多练习,仅仅学习书本理论是没用的,多跟导师一起做项目,做的多了,能力自然就提升了!

 

 

 

 

熊英杰

2013级

软件工程3班

Top