最新评论

共3页: 1 2 3 下一页 
香炮 2010-08-20 11:32
good!
b4n73 2009-01-16 00:13
@yanwc
写得不够详细,而且有些错误,就删除了~~
yanwc 2009-01-14 23:18
怎么少了一篇??
yooo 2009-01-12 22:53
如果用到的表变为 用户表、角色表、用户角色关联表、模块表、功能表、模块功能关联表、角色模块关联表 ,结果会怎样呢?
Abbott zhao 2009-01-12 13:19
你的权限设计是基于数据结构的,没有体现权限的基本模型(RBAC)--授权,验证,权限的二元操作等等。而且你的权限系统做为通用权限模型,必须可扩展,而且不能把二元操作的对象仅体现在模块列表中,而应该是通用的资源概念。
b4n73 2009-01-11 13:28
@吴潮槟
是的,我已经说了实际应用当中会用字符串来表示,用ulong确实也只能用到64位,不过还可以分组,让范围扩大
吉日嘎拉 2009-01-11 02:01
权限也分很多模块,
不同的展示需求,只是展示的效果不一样,后台的数据库设计及
处理思想,甚至接口,都可以是一致的。
吴潮槟 2009-01-10 21:20
用int不如用字符串,楼主的设计方案跟我现在用的差不多,不过没有我的强大。
Permission其实可以用一个字符串key来表示,
如:Add,View,Edit,Delete,Setup,Info等等
而角色的权限值可以通过一个string来
如:(View,Add,Edit)

而在业务逻辑上可以将Permission定义为一个枚举,在处理角色的权限值时直接转换成枚举类型就行了。但这种方案有一个缺点就是如果用ulong类型,也只能支持到64种Permission

另外楼主的这种方案中对粗粒度控制效果不错,但对细粒度控制无能为力。
希望能跟楼主多多讨论权限控制中的细粒度

eugene512 2009-01-10 15:57
^^^ 楼主所说的1 2 4 8 是不是可以说成二进制的值
秋天的菠菜 2009-01-10 13:52
我也作了不少的权限管理,感觉还是不错的。鼓励作者。
极地雪狼 2009-01-10 09:38
通用和定制是两码事,楼主做的是通用版本,不是定制。不要搞混了。
b4n73 2009-01-09 23:35
@沈跃
我前面已经讲了如何给角色赋值,那么假如赋了两个角色B,C,他们的权值是1跟15,那么用户此时所具有的权值就是 1 | 15 = 15了
判断用户是否具备某功能点的权限只需要把功能点的权值与用户的权值进行按位与操作即可~
yangjun 2009-01-09 23:32
楼主能不能放个demo出来,让我等好好揣摩一下,因为以前没有做过权限方面的设计,不知道具休怎么进行与或操作。希望能有个代码,参考。谢谢
阳光沙滩海岸线 2009-01-09 23:17
似乎我现在做的那个系统的权限就是这种结构的……清晰明了~
杨义金 2009-01-09 23:00
我写的文章,希望对你有参考价值,已在很多系统中应用.

http://www.cnblogs.com/yyj/archive/2008/04/28/1175304.html
一头雾水 2009-01-09 22:34
听说E8.Net工作流有下载,google上搜得到哦
沈跃 2009-01-09 22:00
假如又有角色C的权值为1,而用户A同时具备角色B以及角色C,那么当用户登陆的时候只要根据关联表找到他对应的两个角色,再把角色B以及角色C的权值进行按位或操作,即:1 | 15 = 15,15这个值就是用户A所具有的权值了,我们把这个权值保存起来,放入Session或者Cookies当中,显然15这个权值与1,2,4,8做按位与操作的时候皆可得到1,2,4,8,于是用户A就得到了角色B以及角色C的权限,并且角色B跟角色C的权限已经进行了合并。

这个是什么意思?
权限设计 2009-01-09 20:09
顶一个。我也做过与你类似的,核心原理与你的一样,而且也应用了很多个系统,很能理解你的做法。你要做的就是不段完善。
kkeen 2009-01-09 18:21
我想问一下,如果有100个模块(甚至更多),也就是说权值是2的100-1次方,但这个值用什么类型来保存呢?又怎么进行与运算呢?
徐少侠 2009-01-09 17:59
我觉得所谓通用还是有机会的

每个可执行的功能都是一个功能点
所有功能点要被记录在数据库中

博主所谓的功能点和我的说法不是一样的。
因为你说的仅仅是增删改查,其实还是基于数据的操作
虽然能覆盖99%的需要,但是不能保证通用

而我说的功能点,就是一个具体的操作,简单说就是用户嘴里的“能干什么”

然后,我们还需要一个“谁谁”的记录

那么关联起来就是谁谁能干什么

然后,为了简化配置,我们就需要一个“角色”

但是,能干什么这个功能点记要和谁谁关联,又要和角色关联

还有,除了能定义能干什么的关联,还要定义禁止干什么的关联
这样就能在角色组合后对特定的人或角色禁止

其实,通用权限管理是整合了用户管理、角色管理、权限管理、功能点管理4个模块的解决方案

缺少任何一个,就不能成为通用方案

微软的成员管理提供了用户管理的通用方案
角色管理也有了一个基础的模块,不过欠缺角色嵌套的功能

所谓通用权限管理,最终应该是一套数据库表以及服务类库

界面呈现是不需要考虑的。

然后就在大家的项目中各自调用就可以了
共3页: 1 2 3 下一页