项目管理者联盟 | 中国工程管理网 | 中国研发管理网   会员中心 资料库 论坛 博客

PMI-ACP®认证

适合敏捷开发项目
敏捷项目管理最佳实践

网络课程

PMI-PBA®认证

重视项目商业分析
商业价值与需求分析能力

网络课程

NPDP®认证

产品管理国际认证
全球产品管理最佳实践

网络课

PMP®认证

单项目管理经典指南
年轻项目经理首选

北京 | 直播 | 录播

PgMP®认证

大型复杂项目全球标准
定位高级项目管理层

网络班

PfMP®认证

链接战略与项目
实现组织资源投资回报

全球直播

软考项目管理

信息系统项目管理师
系统集成项目管理工程师

计划 | 报名 | 经验

圈子
志同道合,朋友再聚首
项目管理者联盟PMP培训
会员· 圈友
登录ID
密   码
 
圈子信息
圈名:项目管理小茶馆
加入方式: 允许任何人加入

项目管理小茶馆

一个小小茶馆,给那些热爱项目管理职业,有心致力于推动项目管理体系发展的志同道合者提供一个休憩、交流之地。不在乎观点的深度,不在乎讨论的角度,只要你想交流、想吸收、想拓宽你的视野,那么就请来吧。

圈主:heroxmt    管理员牛草草    子墨    lanny       
成员数:129
主题数:1169
排名13
通讯录
圈友列表
加入本圈
管理本圈
 
话题区 投票区 资料区 精华区
标题:如何设置项目中每个功能点的权限?
楼主

wcabt
PMB:21982
省份:天津市
行业:工程设计安装
注册:2006/12/14
  
  
权限的设置是为了软件的整体安全,一个用户登录后哪里可以访问,哪里不能访问都是要控制的。本文就给大家谈谈这个问题。

  导读:

  一个用户登录系统之后,可以访问哪些站点,那些菜单,那些模块,那些页面,那些按钮,都是可以通过权限进行控制的。一个权限做的比较完整的项目,一般人员管理,消息管理,菜单管理,站点管理,日志管理,部件管理,权限管理等等都是受权限控制的,这么多模块每个功能点是如何在权限管理下跑的井井有条呢?最近老是看到很多人在发愁权限,所以把自己的一些见解写出来,供大家参考,也只是自己的一点点思路,不足的地方,谢谢指出。

  问题:刚开始做模块的时候,模块写好了,被测试提过来“你的日志模块功能点不受权限控制”,当时就很模糊,什么是权限呀,去问测试人员,她打开一个页面,上面有棵功能树(很大,显示各个模块,以及模块下面的操作),你的所有的功能点都没在功能点树上显示,只有显示在树上的才可以把功能点分配给人,自己查去吧。回来看了下别人的代码,呵呵原来一个模块开发完之后需要给当前模块所有功能点注册权限。带着测试出的这个BUG,跟大家一起分享下一些知识点,以及权限的核心思想吧。

  1.什么是权限?

  “权限就是有票你就进”

  去游乐园,去乘大巴,去坐地铁,必须的买票吧?权限就像你手里的那张票。

  “权限就是认证不认人”

  权是"权力,制度",限是“限制,管理”,连起来就是:XXXX通过权力,制度去管理XXX,在现在中国有12多人口,政府也给每个人发了证“身份zheng”,抗日时期小日本通过“良民证”去管理“中国人民”,看来受管理的都有一个特点就是“他有证”。

  2.你要给谁设权限----谁就是我们所说的功能点

  我们要清楚的明白,我们要给系统里的用户角色站点日志等等模块设权限,让有权限的人去管理自己权限下面的操作。

  “你要用谁要去控制谁,你的功能点的粒度有多大”

  第一个谁一般是用户;第二个谁很可能是一个模块(日志模块),一个表对象,一个表里面的一条记录,甚至是一个页面的一个方法,甚至是一个安牛,你所谓的功能点可以是上面的所有东西,但是你一定要明白谁要控制是谁?一般可以细化到一个模块,一个页面,页面的一个“删除”,“添加”按钮。

  3.怎样去控制?

  怎样去唯一标识这个“控件”,“方法”,“类”(也就是我说的功能点)

  "给每个'按钮'一个身份zheng"既然权限是“权限就是认证不认人”,那么当然的给没个功能点加一个唯一标识了。唯一标识一般的方法是“模块名称+控件的ID”。

  天呀,这不是要杀了我吗?这么多,没办法,嘻嘻,你必须这么干

  4.权限管理模块一直在干什么样的工作【核心】

  1.)当一个用户进系统之后,可以拿到这个用户所有有可以控制功能点的信息

  比如可以拿到有权限的站点,有权限的菜单,有权限的模块,有权限的页面等等。

  2.)拿到系统里面所有的功能点,然后把它分配给希望分配的角色或者用户

  权限管理模块必须可以拿到系统里面你配置的所有的功能点(最好以一棵功能树的形式展现出来),并且可以把权限分配给一些人员,角色,有权限的用户可以把自己的权限分配给别人,权限大的用户可以控制所有信息。

  3.)当开发人员开发一个新的模块的时候,只要做简单的操作就可以把新的功能点注册到权限里面,权限模块必须提供一个可扩展的功能,当系统里面多一个模块的时候,可以让开发人员迅速的注册功能点(一般是XML格式)。

  4.)当用户发送一个请求的时候,能返回当前用户是否能操作该按钮(控件,对象)

  开发人员只要把当前用户的Id与功能点的ID给权限服务就可以返回当前用户是否有操作当前对象的权限

  5.)权限管理模块有自己内置的潜规则,也就是优先级

  当两个权限发生冲突的时候,靠我们自己定义的优先级进行匹配

  5.程序开发人员开发一个新的模块如何注册权限的?

  1.)写你的模块代码

  2.)把你模块的功能点都注册到权限树上(把你功能点写到XML上),各个功能点进行验证【如果没有这个验证,功能点虽然挂到权限上了,但实际上是没受权限限制的】

  3.)超级管理员进来,可以操作权限树,把你的功能点权限分配给别人

  5.)分配你权限的账户可以访问你页面上的操作

  解决问题:“你消息模块的删除按钮不受权限控制”如何修这个BUG?一个按钮不受权限限制?怎么受权限限制呀?

  1.)首先的把当前按钮的ID注册到权限(模块名+功能点名)一般这个就可以唯一标识你当前的ID

  2.)然后在你当前控件代码里面写,根据这个身份zheng去权限请求一个服务,if(有权限)按钮可用ELSE按钮不可用【如果没有这个验证,功能点虽然挂到权限上了,但实际上是没受权限限制的】

  3.)最后权限好用不好用只有测试人员去测了

  备注:对于以些小的网站,其实我认为权限设置到页面级就可以了,没必要注册到所有的操作.

回复 | 引用 发表时间:2014/4/29 22:42:59
!  您尚未登录,不能回复主题。    现在 登录  注册
关于联盟 | VIP会员 | 培训服务 | PMP认证 | PgMP认证 | 刊物出版 | 沙龙会议 | 人才服务 | 广告投放 | 联系我们 | 友情链接
建设运营:共创时网络
版权所有 京ICP证070584号 BBS业务许可2007第353号