免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 6643 | 回复: 26
打印 上一主题 下一主题

权限管理系统的设想 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-08 23:41 |只看该作者 |倒序浏览
我现有的论坛的权限如看贴、回帖、下载等功能是作为论坛的属性,做到表的字段中,如果要增添某个权限功能,则相应地增加字段,并可能要修改程序,很不利扩展。我希望把权限管理简单化、集中化、易扩展,因此想了这么一个方案,思路来源于生活,我把设想在这里贴出来,如有雷同纯属巧合。

原理启发

80年代以前,很多商品实行凭票供应,那个时代,有钱没票商店不卖。顾客去商店买一斤白糖,商店小黑板上写着“白糖/3号糖票”,售货员根据顾客的需求“白糖”,查到需要的票据是“3号糖票”,于是要求顾客拿出“3号糖票”才出售白糖。逢年过节,上级指示,增加“香肠”供应,于是小黑板上又多了一条“香肠/5号副食品票”。
程序的验证就如以上的权限认证的过程,顾客(用户)购买(使用)某商品(功能),该商品的购买条件(使用权限)由上级指示(管理员录入)写在黑板上(保存在表的记录中),而不是附加在商品本身(功能自身不考虑使用权限),售货员负责核对顾客是否具有购买的权利(验证程序模块负责审核用户权限),由售货员(验证程序)根据黑板上(数据表中)的上级指示(管理员增添的记录中),检查顾客(用户)是否拥有相应的票据(某种电子票据如“通行证”),有则允许购买(允许使用该功能)。

售货员不必背诵所有商品限制规则(验证程序不必把所有规则固化在程序中),因为商品随时会增加(新增功能模块程序),而只要随时看小黑板即可(规则由表中查询)。

顾客的票据由上级分配(用户的某种“电子票据”由管理员分配)。如此看来,商品供应规则的登记(功能模块的登记录入)、票据的配给(“电子票据”用户分配)、销售时票据的查核(程序验证)构成了权限系统的3个部分的集中管理。

程序实现思路设想

程序按照这个思路,也分成3块:

1)模块/权限登记:

负责将所有功能包括新增功能的权限规则记录在功能权限对照登记表中。

2)用户/用户组通行证发放:

负责给用户/用户组发放对各个模块的使用权限。

3)通用验证程序:

通用验证程序可做成一个函数,每个功能模块在开头调用一次即可,大致如下所示:


  1. if get_permission($MoID, $UserInfo) == “false”{
  2.         //跳转错误处理
  3.         exit some code here;
  4. }
复制代码


$MoID是每个功能模块自身拥有的唯一代码,保存于 [功能权限对照登记表] 中。
$UserInfo是包含用户通行证数据的变量或数组,可以是用户登录后从 [用户组表] 中查询的记录值。

此函数的功能是:接收某功能模块的请求,然后根据功能模块的$MoID查找 [功能权限对照登记表] ,查到访问该模块的所需通行证,再核对用户$UserInfo中所持有的通行证,如没有则转到错误处理界面,有则允许访问。

设计开发新模块时,需要为本模块起一个ModID,安装模块则添加此ModID记录到[功能权限对照登记表]中增加记录,并设置该模块所需通行证字符串内容。

“通行证字串”可以使用固定长度不重复的随机号码如“K4XZ-A74B”,不过为了好记容易理解,下面的示范使用了与功能代号相关的代码,此字串一般由模块/权限登记程序统一分配,而与模块本身无关。

[ 本帖最后由 qingmedia 于 2006-1-8 23:59 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-01-08 23:55 |只看该作者
附图1-功能权限对照登记表(示范)

1.png (13.06 KB, 下载次数: 33)

(1). 功能权限对照登记表(示范)

(1). 功能权限对照登记表(示范)

2.png (34.12 KB, 下载次数: 29)

(2). 用户组 表(示范)(有关通行证分配字段部分)

(2). 用户组 表(示范)(有关通行证分配字段部分)

论坛徽章:
0
3 [报告]
发表于 2006-01-09 13:21 |只看该作者
可能我语文比较差,不能完全理解楼主的表术,但隐约觉得就是一个基于角色扮演的权限管理思想,不知楼主是否认同我的判断?
BTW,我鉴定楼主为80年代前的不知对否?

论坛徽章:
0
4 [报告]
发表于 2006-01-09 15:23 |只看该作者
原帖由 crazysoul 于 2006-1-9 13:21 发表
可能我语文比较差,不能完全理解楼主的表术,但隐约觉得就是一个基于角色扮演的权限管理思想,不知楼主是否认同我的判断?
BTW,我鉴定楼主为80年代前的不知对否?


可能有点角色扮演的意思吧?我对角色扮演的意义不是很清楚。

BTW,我80年代参加革命工作了

论坛徽章:
0
5 [报告]
发表于 2006-01-09 18:26 |只看该作者
不能理解。如果只是给论坛增加权限,为何不仿造linux的权限设定法,给每个帖子增加一个字段
比如
777 ,555,
用来对应owner gruppe gast 3种人的 读,写,执行权限?
对于通行证的作用,更不能理解。

论坛徽章:
0
6 [报告]
发表于 2006-01-09 18:31 |只看该作者
试试

论坛徽章:
0
7 [报告]
发表于 2006-01-09 18:32 |只看该作者
原帖由 imbiss 于 2006-1-9 18:26 发表
不能理解。如果只是给论坛增加权限,为何不仿造linux的权限设定法,给每个帖子增加一个字段
比如
777 ,555,
用来对应owner gruppe gast 3种人的 读,写,执行权限?
对于通行证的作用,更不能理解。


论坛的执行权限是啥??

论坛徽章:
0
8 [报告]
发表于 2006-01-09 18:58 |只看该作者
同意。

论坛徽章:
0
9 [报告]
发表于 2006-01-09 19:15 |只看该作者
原帖由 qingmedia 于 2006-1-9 15:23 发表


可能有点角色扮演的意思吧?我对角色扮演的意义不是很清楚。

BTW,我80年代参加革命工作了



角色系统跟用户组概念差不多,不过角色更灵活,一个用户可以扮演多个角色,一个角色里可以有多个用户,因此权限算法上复杂一点,不过实质也就是做或运算而已。
角色权限跟附加到它身上的功能点权限有关,就跟你的设计类似,比较推崇这种设计,不喜欢HACK CODE字段的,即便可能速度快点,但扩展很不方便。

BTW,那我对你的鉴定是对了,呵呵。

论坛徽章:
0
10 [报告]
发表于 2006-01-10 00:13 |只看该作者
原帖由 crazysoul 于 2006-1-9 19:15 发表
角色系统跟用户组概念差不多,不过角色更灵活,一个用户可以扮演多个角色,一个角色里可以有多个用户,因此权限算法上复杂一点,不过实质也就是做或运算而已。
角色权限跟附加到它身上的功能点权限有关,就 ...


我这种思想跟角色系统殊途同归,也可以很容易做到你说的功能。

过去各个省甚至地市使用不同的所谓“地方粮票”,你拿河南粮票去安徽肯定不接受,反之亦然。不过他们除了接受本地粮票之外,还可以接受“全国粮票”。

同样地,每个功能可以不止接受一种“通行证”,可以接受多种(权限算法即是简单的or而已)。比方说,所有的功能在原有基础上另增加接收的一种“管理证”,只颁发给“管理员”,那么,“管理员”只要一证在手,即可使用所有功能。这样可以很灵活。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP