专注于中国的商业智能

通用用户权限系统设计(续)

非常抱歉,在前几天发的那篇《通用用户权限系统设计》中,文字描述

没有表达清楚我的意思,草草的贴出了数据库的表设计,请园子里的朋

友见谅。现在我针对一些朋友提的意见做一些回答,已经把上篇文章中

缺少的页面怎么控制的部分,补上去。

首先回答几个主要的问题:
1。一个人是否可以在多个部门?
我这里的设计是不能在多个部门的。虽然我想现实中一个人属于多个部

门的情况实存在的,但是在我们的系统里面可以把他放到一个部门里,

也不会造成问题,因为我这里的部门仅仅只是让人家看这个用户是属于

哪个部门的,跟权限没有关系。权限只跟角色和所属用户组有关系。
2。角色和用户组是否已经重复了?
刚开始我也这么觉得过,后来考虑了再三,并且在网上搜了一些资料,

还是留下来了。事实上用户组和角色区别比较小,我自己说不清楚,我

借用IT难民的这篇文章《用户、用户组、角色的区别和联系 》来做回答

,可能更容易说明问题一点。
3。页面控制权限到底怎么做的?
这个别急好吗,我下面会详细解释。也有朋友问道会不会判断权限会不

会频繁读取数据库,我的回答是不会的,在用户登录的时候,我就把所

有权限放到session里面,用到的时候,直接判断,不会跟数据库打交道


4。关于数据的权限控制?
我原来做这个设计的时候,就没有考虑要设计数据权限控制,所以在我

这里设计里面这个需求是做不到的。可能都怪我“通用”这个词语吧,

其实我的本意是大部分MIS系统都能拿来用的功能权限控制。也有些朋友

提到,我的用户表字段肯定是不行的,还有把子系统表去掉等等。我想

我这个权限系统只有权限控制部分是可以公用的,用户表肯定每个系统

都不一样。

好了,回答了朋友们的问题。接下来,我相对完整的讲讲我这个权限控

制的思路吧,包括页面级怎么控制功能。
1。权限定义
其实也有朋友提到,权限定义和权限控制是需要分开的,其实我也是这

么想的,我们可以把权限定义做成一个专门的工具,最好不要集成在用

户系统里面。
我们一起来看看需要定义哪些信息。子系统编号,模块编号,功能编号

(用于控制树型菜单是否显示),功能名称,描述,页面名称(用于控制页面是否能够进入)

,按钮名称(用于控制功能按钮是否可用)(不好意思,上次弄的时候,把这个字段弄丢了;
2。给用户或者角色赋予权限;
3。在用户登录的时候,把用户所属角色,用户组,用户本身的权限都取出来,放到一起,存到session里面中去。
4。在我们的页面基类里面重写onload方法,在里面写上判断权限的代码。判断当前用户的session中是否有访问该页面的权限(没有权限则弹出提示,并且返回到请求页),以及该页面上的按钮(没有权限则置为不可用)
5。在导航树型菜单里面,把当前用户没有的菜单项去掉(其实就是功能编号)
6。这样的话,相当于把权限控制全部封装到基类里面了,业务模块不需要关心权限问题,只需要把做好的业务模块的权限注册到权限表中去就可以了(第1步)。

大概就这样子说吧,如果说的还明白,请朋友们跟贴。代码暂时还没有弄好,特别是页面,比较麻烦,最近时间也不是很多,请大家见谅。

posted on 2008-04-28 19:05 李梦蛟 阅读(2565) 评论(12)  编辑 收藏 所属分类: 系统分析设计

Feedback

#1楼  2008-04-28 19:18 包建强      

老哥,提个建议,实际企业应用开发中,都根据具体需求而开发不同的用户权限系统,百家争鸣是好事情,没有必要统一。所以你这套设计不切合实际,是纯技术研究,而且微软有一套MemberShip体系专门用于权限控制,比你这套要先进。言重之处,请见谅哦。。。
不服欢迎去我那里踢馆,嘿嘿。   回复  引用  查看    

#2楼 [楼主] 2008-04-28 19:20 李梦蛟      

@包建强
欢迎提意见,其实你说的也有些道理,但是全国做MIS系统的那么多,肯定有很多是类似的,我是希望能够应用到那种项目中去,用户和部门那些是要改,但是至少功能权限控制,我想应该在我说的某些范围内还是适用的。   回复  引用  查看    

#3楼  2008-04-28 20:23 w3c [未注册用户]

支持博主,所谓通用,也不一定是所有人的所有项目都适用,给大家特别是菜鸟提供一个样板参考,就是这个作用我觉得也是相当大的。支持博主   回复  引用    

#4楼  2008-04-28 22:00 lazylu      

建议要通用就应该去掉“页面名称”之类太具体的东西,否则通用性是非常差的。   回复  引用  查看    

#5楼  2008-04-28 22:11 杨义金      

这样的权限控件系统在实际应用是中很有必要的,我们公司也一直在这方面有投入和研究。
但我觉得楼主的想法还太粗浅,还需要在实现应用中不断总结。

但无论如何,有想法比没有想法要好的多,相信楼主经过几次迭代,会出现一个好的通用的权限控件系统。

有时间我也把我们公司的一些想法共享一下。   回复  引用  查看    

#6楼 [楼主] 2008-04-28 22:13 李梦蛟      

@lazylu
请问一下有页面名称怎么会不通用呢,我这里只有通过页面名称来控制才能实现在具体的页面跟权限无关。如果你觉得对于winform不通用的话,可以存类的完全限定名   回复  引用  查看    

#7楼  2008-04-29 06:47 金色海洋(jyk)      

这回一张图都没有了呀。
有空我也整理一下我使用的权限的方式。   回复  引用  查看    

#8楼  2008-04-29 08:13 笨笨的考拉熊      

--引用--------------------------------------------------
包建强: 老哥,提个建议,实际企业应用开发中,都根据具体需求而开发不同的用户权限系统,百家争鸣是好事情,没有必要统一。所以你这套设计不切合实际,是纯技术研究,而且微软有一套MemberShip体系专门用于权限控制,比你这套要先进。言重之处,请见谅哦。。。
不服欢迎去我那里踢馆,嘿嘿。
--------------------------------------------------------

通用不代表套用,而是为了实现复用,虽然每家企业的情况不同,但有些东西是永远相同的,比如用户登陆、注销、添加、删除等。
通用系统的本意是为了简化这部分的操作,而不是连你的企业的名称都通用,那就是扯淡了。
说微软的membership先进,membership虽然挺好,但首先我看不出到底有多先进,其次它很不适合我这种懒人使用。我想要的是上去就能用的现成的框架,而不是还得在上面做N天二次开发才能用上的东西。
作个对比,membership就是Sharepoint service一样提供了服务,但我想没人首先想到的是用sharepoint service做二次开发,而是先想到装个sharepoint server直接用。通用权限系统就相当于sharepoint server.   回复  引用  查看    

#9楼  2008-04-29 08:22 李战      

  回复  引用  查看    

#10楼  2008-04-29 09:15 狼Robot      

等楼主的代码   回复  引用  查看    

#11楼  2008-04-29 11:17 lzppcc [未注册用户]

你可以看一看http://framework.supesoft.com   回复  引用    

#12楼  2008-04-29 19:09 森要 [未注册用户]

楼主请继续,我觉得你这个的想法比较好,相信会比membership实用   回复  引用    



标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: