基于MVCWEB信息系统RBAC权限管理和菜单生成设计,本论文为您写权限管理毕业论文范文和职称论文提供相关论文参考文献,可免费下载。
权限管理论文参考文献:
摘 要:文章通过节点,角色,用户和这三者之间两两关系的数据库表设计,实现了三个好处:系统的维护灵活度增加了,新增功能只需要简单几步就可以加入菜单;用户对应多个角色可以减少了每个用户设定权限的工作量;方便的生成每个用户对应的菜单.
关键词:访问控制;权限管理;RBAC
中图分类号:TP3092 文献标识码:A文章编号:1006-8937(2014)15-0074-01
1要求
①有 菜单.②对不同的用户显示相应的菜单,用户有权限的菜单才显示,没有权限的不显示.③系统能在使用的同时不断的加功能,也就是菜单会动态的增加.
2解决方法
①系统访问URL形如:http://serverName/appName/mod-
ule/action/id/1/,这里的module是控制器,也是独立的功能,action是方法,一个module对应0~N个action.②使用在用户和菜单之间,加入角色概念.比如“管理员”有查看日志的功能.“产品”一般就是编辑功能.那产品主管就可以选定管理员+产品就可以了.而不用再新建一个“产品主管”的用户.
使用5个数据表来实现这个功能,分别是Node(节点表)见表1,Role(角色表)见表2,user(用户表)见表3,Node_role(节点-角色对应表)见表4,User_Role(用户-角色对应表)见表5,数据表部分字段设计如下.
3基础菜单的添加
这是整个系统初始化的基础步骤,假设添加一级菜单三个排序分别为:基本信息、订单、用户.基本信息下有两个二级菜单:新闻、商品,应该加入菜单表如:
①一级菜单的添加:INSERT INTO Node(name,level_1,level_2,level_3)VALUES(‘info’,1,0,0).②二级菜单的添加:INSERT INTO Node(name,level_1,level_2,level_3)VALUES(‘news’,1,1,0).
一,二级菜单的关联完全是依据排序,和ID没有关系,这样的好处是:和界面设定的菜单直接对应起来,后面要加功能( 菜单)的时候想加入第几个一级菜单和第几个二级菜单就可以直接填写,直观方便.
4菜单增加
这是基础步骤.每当一个功能(控制器module)完成上线后,要把这个功能加入到系统的菜单.就是添加节点.一个控制器可以有N个节点,至少有一个节点,这个节点是它本身.其他的节点表示方法(action),比如常见的添加add,修改edit,删除edit.
那么,假设把一个有添加add,修改edit,删除del三个方法的焦点新闻功能加到二级菜单新闻(这个二级菜单新闻是前面定义好的,一级菜单排序1,二级菜单排序1)下,那么SQL语句如:
INSERT INTO NodeVALUES(,0,2,‘jd-news’,’焦点新闻’,1,1,1);
得到ID假设为888,接着添加方法:
INSERT INTO Node VALUES(,888,‘add’,,3,0,0,0);
INSERT INTO Node VALUES(,888,‘edit’,,3,0,0,0);
INSERT INTO Node VALUES(,888,‘del’,,3,0,0,0);
这样,根据level_1,level_2,level_3的值,就可以得出控制器节点的排序位置,如果level_2,level_3为0,表示这个是一个一级菜单,如果level_3为0,那么这就是一个二级菜单,如果全为0,则表示这是某个控制器的方法.
5权限设定
分两步:①给角色分配权限,最好是角色间的权限不重复.加入node_role节点角色对应表.②给用户设定角色,一个用户可以多个角色,加入user_role用户角色对应表.
6前端菜单生成
这是重要的步骤,用户登录进入系统后,生成这个用户对应的菜单.方法如下:
①获取用户ID,假设为888,初始化一个菜单数组menu.②查询Node(节点表)生成菜单,先按顺序生成一级菜单列表,加入菜单数组menu,每个菜单标志‘n’.③循环一级菜单,按顺序生成每个二级菜单,加入菜单数组menu,每个菜单标志一个‘n’.④循环二级级菜单,按顺序,并关联用户-角色对应表和节点-角色对应表,检索出这个用户可以访问的节点列表.一一加入菜单数组,加入菜单数组的每个节点,都把它所对应的二级菜单和一级菜单的‘n’标志去掉,已经去掉的就忽略.⑤再循环一次菜单数组menu,把所有标志为‘no’的一级菜单和二级菜单去掉.
这就得到一个可用在前端显示的菜单数组,形如:
$menu等于array("基本信息"等于>array("新闻"等于>array("焦点新闻"), "商品"),
"用户"等于>array("所有用户"等于>array("用户统计"),);
‘no’标志的作用在于,一开始设定这个菜单不显示,那么如果有查询到这个菜单下的一个控制器( 菜单)有权限,那么这个 菜单所属的二级菜单和一级菜单,都会显示.最后再把‘no’标志的菜单都删掉,这样用户就看不到自己没有权限的其他菜单了.
7后端代码验证
为了防止有些非法用户试图通过直接输入URL来访问,那么在后端应该要做个检测机制.可以在公共类里写个检测的方法.并且所有的控制器都继承这个公共类.那么这个检测的方法实现原理如下:
①获取用户的user_id,访问的模型名module,访问的方法名action.②查询node表中这个节点的node_id,这里分两小步:查询node表中name等于‘module’的ID假设为m_id;查询node表中name等于‘action’AND pid等于m_id的ID为n_id.③依靠user_role.roleid等于node_role.role_id这个条件,关联用户-角色对应表和节点-角色对应表这两个表,查询where node_
id等于n_id的记录.④如果有记录,表示可以访问;如果没有记录,拒绝访问.
参考文献:
[1] 信科,杨峰,杨光旭,等.基于RBAC权限管理系统的优化设计和实现[J].计算机技术和发展,2011,(7).
[2] 倪东英,张晓丽.基于RBAC的用户权限管理的设计和实现[J] 济南大学学报(自然科学版),2010,(2).
[3] 马丽,马世龙,眭跃飞,等.一种RBAC的描述逻辑表示方法[J].计算机科学,2010,(3).
结论:适合不知如何写权限管理方面的相关专业大学硕士和本科毕业论文以及关于wifi*查看器论文开题报告范文和相关职称论文写作参考文献资料下载。
医院药品物流信息系统建设和管理
[摘要] 目前医院内部药品流通的环节众多,参与人员广泛,医院的护理、药剂人员承担了大量的药品额外的物流工作,导致本来应该专门于患者的工作重点偏移。
商业银行信息系统外包过程管理
摘要:随着经济、金融全球化的加深以及信息技术的飞速发展和深化应用,信息科技外包已成为银行信息化建设的一种重要手段,是银行减少IT风险投资、降低成。
整合财务资产信息系统提高医院财务管理水平
摘要:在我国计算机技术迅猛发展的条件下,其应用范围正在不断扩大,在医院财务管理工作中采取计算机技术,可以促进财务资产相关信息系统的有效整合,同时。
信息系统环境下企业集团资金集中管理探究
摘 要:本文主要以信息系统环境下的企业集团资金集中管理作为重点展开论述,结合当下企业集团资金集中管理过程中的突出问题为主要依据,从基于信息系统环。