[导入]权限系统设计方案讨论
今天大家一起讨论了一下权限子系统设计的方案,TT最初的设想如下(错的地方给更正一下):权限系统里面有用户,角色,资源3个对象。所谓资源就是系统的功能点,功能点同时映射到程序里的每个服务,这样有两层权限控制,第一层是控制进入客户端和界面显示,第二层控制每个服务的调用,用户和角色就不用解释了。这样初步设计一个权限认证接口,有两个参数,用户ID和资源ID,这样确实是最常用,也是很实用的控制方式,但我们设计的初衷是要做成可插拔系统,目前这种方式各子系统确实依赖于权限系统,单独剥离无法实现,我们要尽量降低耦合。经过一翻讨论,提出如下方案,权限子系统只管理用户和角色,资源和由各个子系统自己管理,每个子系统实现自己的权限认证,相当于各个子系统都有自己的权限认证服务,权限子系统负责将插进的新模块的资源赋予角色然后将对应关系返回给各个子系统。这样各个子系统就可以实现自己的权限认证而不依赖与权限子系统,这样如果是各子系统要单独剥离,它只用管理自己的资源,不关心其他系统,而且如果是系统交互原因要采用其他的权限认证方式也非常方便,这样做在一定程度上会增加些复杂度,但这里的付出应该是值得的。不管怎么样,先把接口写出来,慢慢重构吧!
文章来源:http://www.agilelabs.cn/blogs/pump/archive/2005/12/19/278.aspx