现在的位置: 首页 > 综合 > 正文

过度的权限设计

2012年11月28日 ⁄ 综合 ⁄ 共 792字 ⁄ 字号 评论关闭

权限设计,是我所见过的国内行业中唯一一块过度设计了的模块,其他模块,大多都被视为对表的增删改查。从进入这个行业至今,大部分公司的系统权限管理,都做到完全动态设置的,或者在力争做到这一点。笔者本人也做过C/S下基于控件的完全可配置的树状权限控制系统。但所有这些产品都存在一个问题,权限子系统被过度设计了。客户所需要的,或者最终用到的,最多只是十之二三。为何会出现这种情况呢,我想大多数公司或个人都想把权限做成一个独立的,强大的系统支撑模块,另外一点,国内客户对权限的要求非常简单,出于以应对客户可能的需求变化,所以想做到一劳永逸。可是,权限控制,是耦合在业务模块之中的,嵌入在不同层次的额外控制代码,想做到独立于业务模块,又谈何容易啊。AOP可以做到捕捉横切点来加入权限控制的织入,理论上是完全可行的,可是用AOP来做权限控制,在面对简单的权限控制要求时,似乎有点儿杀鸡用牛刀。而在面对复杂的权限要求时,没有严格的约定,过于自由的配置,是可能导致混乱及错误的。

这些年来,我也在一直思考权限问题,在使用微软技术做开发的时候,我们有没有尽可能的使用微软提供的验证以及授权框架呢。验证和授权不可能游离于技术发展之外,本该简单的需求及实现,何必复杂化呢?如果客户只需要业务员录入订单,经理审核订单的简单权限要求,你又何必要去实现基于方法甚至控件的权限控制呢?尤其是我们现在使用Web Service/WCF的时候,我们完全可以充分利用微软提供的框架内的解决方案。WCF的验证及授权是个复杂的问题,在基于不同的binding,不同的客户端认证信息,可以支持多种验证及授权方式。而且微软在WCF,WPF,WF之外,还提出了WIF,专门用于处理服务的安全问题,如果没有特殊的需求,我们似乎不必要把权限设计得过于精细,粗略的角色,即直接使用windows的用户组(AD)已经可以做到基本的权限控制要求了。

抱歉!评论已关闭.