请教:一个关于行级数据权限模型的问题

06-05-28 pushboy
正好最近在做一个权限系统,有一个很挠头的问题请教,就是关于行级数据权限的控制问题。

简单的说,将权限控制到数据库里同一张表的记录。比如一张费用报销表,里面的报销金额可能从1-100W,项目经理、部门经理、CEO都有审批的权限。对于1- 1W的报销额度,需要项目经理审批,1W-10W的额度,需要部门经理审批,10W-100W的需要CEO审批,而这个额度规定也是可以修改的。我希望可以在业务层进行验权,而不是在UI层。因为对于上述几个用户而言,他们都是有权进入这个审批页面,所不同的是,只能在各自额度范围内进行操作。

这样的一个权限对应怎么建立呢?

我原来的方案是-暂不考虑角色、用户组等,先看一个最简单的模型,如附件:

1、有一个权限项目表,里面记载了实体对象和操作,它和用户表关联成为一个授权表,验权时候根据用户、对象、操作检查这张表;

2、对于这每一条记录给他归类,比如叫 费用报销1-1W,费用报销1W-10W,费用报销10-100W(大概的意思),然后把每一个分类作为一个权限项目里面的实体对象对待;这样,授权和验权与上面一致;

3、但是问题是,对于这样的数据如何归类?归类操作在什么时候,由谁来作?4、这样的归类,对于业务系统而言,是否一场灾难?因为每一条记录最少属于一个类别,甚至更多。那么这张数据归类表的数据岂不最少要和源数据表一样多? - 图即附件2的“数据分类2”

5、如果在每一条记录后加多一个属性"数据分类",图见附件3的"数据分类1"。则数据量减少,但是如果每条记录允许属于多个分类,那么这个属性就是分类的集合字符串,值如"分类1,分类2,分类3"。

6、在这样的一个模型里面,考虑更复杂的情况,如一条数据,属于"分类1"和"分类2",而一个用户对"分类1"项目有操作权限,而对于"分类2"项目没有操作权限,那么,这时候,是允许用户操作这条数据,还是不允许?

我现在已经晕掉了,哪位老大做过类似模型的,请不吝赐教

多谢多谢

1
pushboy
2006-05-28 16:01
简单的权限模型

pushboy
2006-05-28 16:01
两种数据分类示意

pushboy
2006-05-29 16:50
各位帮忙看看阿

taikeqi
2006-05-31 15:49
维持你原有的设计,只把额度类别当成资源;不可能把数据库记录当成资源。

当在判断权限的时候应该判断用户对最大额度的类别是否有权限。

猜你喜欢