求助,权限系统设计

11-01-16 newsunbeam
听说jdon有很多高手,所以今天特意来请教些问题。新人初来,有些冒昧,还望各位莫要见怪,不吝赐教。

我现在在设计一个权限系统,以下是我的类图:


要实现的需求是:为每个用户定义权限,可以最细粒度的定制用户所拥有的功能,以及每种功能所对应的范围(在这里表现为部门)。资源=功能+范围,这个是我的定义。

我的问题是:这个模型是否合理,我觉得满足需求应该是没问题的,但是我现在受制于现有系统(我是做java web开发的,存储使用oracle数据库)无法实现它。不知道各位高手有没有更好的解决方案。

[该贴被newsunbeam于2011-01-16 01:25修改过]

SpeedVan
2011-01-17 17:59
标准DCI设计思想——“用户定义权限”可以理解为角色,“功能所对应的范围”功能为I,范围为C。建议看看DCI。“存储使用oracle数据库”注意不要把功能(业务)写到储存过程上。

按照DCI的思维,你的Department应该内聚到User上,你的部门相当于角色,也就是说你有能力(权力)成为“XX部员”于是,你就可以进入相关的场景了,通过场景行为(功能)完成相关业务。你这里的Resource应该叫Context,资源应该只跟功能(行为)相关,不跟User和Department相关。因为本身Context就约束了权限——角色所能进入的地方。

当然撇开DCI想想,你这样也未尝不可。只是回归自然有点奇怪,资源有功能?对于比较追求自然的人来说,可以说有点不自然。关于部门到底内聚到User还是Resource,这看你对Department怎么看——是一个用户的身份,还是说资源能被那种角色访问,若果是后则,则User也要内聚Department,否则,谁知道我是什么身份呢?或则另外一种方式,去掉Department,你不觉得,你的Department分离出来完全是多余的么?这个Department起到约束性的作用了么?或者需要存在的话,我觉得应该要改动一下模型了。

个人一些见解而已,莫怪~~

kxdd2002
2011-02-22 11:29
用代理模式,在代理类中实现权限的管理。

猜你喜欢