基于MVCWEB信息系统RBAC 权限管理和菜单生成设计.docVIP

基于MVCWEB信息系统RBAC 权限管理和菜单生成设计.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于MVCWEB信息系统RBAC 权限管理和菜单生成设计

基于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’的一级菜单和二级菜单去掉。   这就得到一个可用在前端显示的菜

文档评论(0)

3471161553 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档