很早就完成了权限系统的编码,这里把一些功能说明贴出来,也希望提提意见。
权限系统基于acegi框架实现了从前端页面到后台数据全面的控制。在权限控制中,它将权限分成五类:
一是系统权限,主要是对模块为单位的权限划分,具体就是用户对该模块可见不可见,能不能对该模块进行再授权的操作。表现在用户界面就是用户登录系统主页面后,可以看到的顶部菜单和左侧outlookbar菜单的内容控制。作为粒度最大的权限控制,系统实现了web url的防盗链功能。举例来说,用户新开发的一个叫车辆管理的模块,配置在http://localhost/business/carmanage.action的url下,当对这个模块的权限加以控制后,直接在浏览器中键入http://localhost/business/carmanage.action同样是无法访问的,而不仅仅是界面内容的屏蔽。
二是模块操作权限,在对整个模块的权限做出控制后,这里继续对模块的浏览、增加,修改,删除的操作权限做出控制,也可以理解为对象权限 。还是以车辆管理为例,不同的人员对这个模块的操作是不同的,有些用户可以新增,删除车辆;而有些用户则只是可以对车辆的情况查看不能修改。通过系统提供的一套web 标签,页面可以根据用户不同的操作权限屏蔽相应的功能按键。例如删除,新增按键。用户绕过页面直接操作相应业务方法同样也做到了严格的控制,没有权限的访问会被拒绝同时记入日志。
三是数据范围权限,又可以叫做对象实例级权限。事实上不是每个用户都可以看到所有记录的。以财务管理为例,部门经理只能查看金额小于1W的数据;而总经理则没有限制。权限系统对这部分权限也做出了全面的控制,可以根据数据类型,相应字段数值范围做出控制。
四是单条数据ACL权限,为了满足更严格的数据权限要求,权限系统对数据实现了单条数据的ACL权限,具体说就是对每条数据都实现了权限控制,每条数据都有一到多条权限数据与其对应。以个人通讯录为例,每个用户都维护自己的一个通讯录,这些数据都只是对本人可见,其他人不可见。但用户可以对这些数据做出授权,将某条联系方式以授权的方式共享给其他人,并赋予不同的权限,包括拥有,修改,删除,浏览四种权限。
五是数据字段权限,通过xml配置,系统保证了用户的最小粒度的权限控制。每条业务数据权限可以精确控制到每一个字段。包括单个字段的可否浏览以及可否修改。保证了敏感信息的安全性。
授权,作为权限系统的重要部分,系统提供了相当方便的操作体验。以树状的方式展现权限主体(用户,角色,部门)以及资源,方便,直接,一目了然。区别与传统的RBAC模型,权限不仅仅可以分配给角色,也可以分配给部门和用户。实际的权限是这三者权限的叠加,最大限度的方便用户操作。考虑到用户的扩展,系统提供两个权限继承规则接口,用户可以自定义权限继承的规则。例如,部门A下有部门A1,部门A的权限是否由部门A1继承。
整个权限系统的数据都建立在系统统一的缓存管理之上,用户登录后,其权限信息即被缓存,保证系统的效率http://www.blogjava.net/ronghao 荣浩原创,转载请注明出处:)
posted on 2007-03-18 22:46
ronghao 阅读(4924)
评论(5) 编辑 收藏 所属分类:
权限相关