标准权限模型RBAC与实际日常开发工作结合后,我对RBAC模型的改进优化研究成果分享
2009-09-06 12:39 通用C#系统架构 阅读(7726) 评论(29) 编辑 收藏 举报我经常是实践出理论,其实理论指导实践会更省力一些,再出理论是正确的做事方法,
有些人过于迷信理论,有些人过于务实,都是有所缺点的,我是属于那种过于务实派,哈哈。
什么叫水平,不在于用复杂的方法解决简单的问题,而在于用简单的方法解决复杂的问题,
问题深入简出,搞定个彻底。虽然我对权限的研究登不上大雅之堂,但是我们日常工作中
经常会遇到类似问题,特别是对初学者来讲,往往是云里雾里,对做一些实实在在项目的
人来讲,的确有这么一个实实在在的工具可以节省很多力气。
RBAC也不是什么完全的真理,也有很多缺点,不是老外弄出来的标准就是真理,国人也
需要弄出来点儿东西,有时候我们会更行,我们不能自大但是我们不能迷信RBCA。
我们不只是学习别人的,更需要提高自己,超越别人的研究,我们要比老外也研究得透彻。
虽然我不是学者,但是我本着研究透彻的理念,一直没有放弃对权限的研究,虽然本人不
才,前前后后坚持了10年不放弃对权限的研究,也成了我最大的业余爱好之一。
操作系统能否通用?数据库能否通用?论坛能否通用?大家都知道,这些都是可以的,你
可能有很多不同的需求,但是这些都能满足,但是真满足吗?未必,有些需求是荒谬的,
被驳倒了,有些需求,这些通用的东西还无法实现,你需要2次开发。
权限能否通用?一样的,完全可以通用,你个性化的需求需要进行2次开发,有些需求是
荒谬的,是因为你的无知提出了稀哩啪啦的不成立的互相矛盾的需求,权限也是可以通用
的,我们国人有时候太封建,太过于传统,才导致很多好东西都是老外发明的,我们有时
候需要更开放的思想,接纳一些新思维、新提倡,我们更需要的是创新思想。
这几年,我也感觉了一下,为什么我们中国式思想,搞不出啥玩意儿来,就是因为中国人
把问题想的过于复杂,我们中国人能把简单的问题复杂化,但是没有能力把复杂的问题简
单化,这也是导致,中国人没能开发出 CPU、操作系统、数据库系统、开发环境、开发语
言。中国人都在搞万能的快速开发平台,难道微软傻瓜了,微软人的人都成猪了?不开发
出来中国人想象中的万能快速开发平台?拖拖拉拉,老大妈也能开发出管理系统的神奇系统?
我们的头脑是孙悟空,老外的头脑是变形金刚,这就是我们的思想的差距,我们能一步登天。
我们头脑想问题太复杂了,不像老外那么简单化,反而我们失去了大聪明,我们是小聪明。
废话少说,只奔主题:看图
我想通过6个方面,来验证一下我的权限的通用型,当然我的这么一个小工具不是万能,
但是有2次开发的接口,你也可以在我的基础上进行2次开发,可以做不同的展示页面,
可以写个性化的权限需要的函数,当然在不修改程序的前提下就可以满足大部分的日常
管理软件的权限需求,这是我所追求的。
我主要讲解的6个方向为:
1。操作权限,按钮级权限
2。拒绝权限,反正常思维的权限
3。单元格权限,脑筋急转弯的权限处理方式
4。数据列权限,字段列级权限
5。数据集过滤权限,数据行级过滤权限
6。页面级权限,模块菜单权限处理
有一个网上的朋友说得很好,“权限至少是要分三个层次,分别为页面级别、按钮级别、数据级别”,
的确说得非常有道理,我的通用权限设计应该是完全满足这3个层次上的需要的。
传统的RBAC权限模型的设计为:
3-4年前,我们按RBAC的设计思想,来实现通用权限,但是系统虽然是成功上限了,
但是权限的定义及调用还是感觉很不灵活,多个人同时开发很容易导致权限定义混乱
的局面,感觉对资源+操作的权限定义,在实际开发中不够灵活,操作过于笨重,我
对RBAC进行了改进,将权限定义进行简化不把权限定位为资源+操作,而是定位为
“资源.操作”不再分开,而是进行了合并了,经过接下来的3-4年实践证明,
“资源.操作”非常灵活,定义权限简单,操作简单,程序调用起来也很简单。
改进为入下图的权限定义模式
在实际程序中判断权限,就变得很简单了,类似以下代码判断就可以了。
2 /// <summary>
3 /// 获得权限
4 /// </summary>
5 private void GetPermission()
6 {
7 this.PermissionAccess = this.IsAuthorized("User.Access"); // 访问用户管理
8 this.PermissionSearch = this.IsAuthorized("User.Search"); // 查询用户
9 this.PermissionAdd = this.IsAuthorized("User.Add"); // 添加用户
10 this.PermissionProperty = this.IsAuthorized("User.Property"); // 编辑用户
11 this.PermissionSetPassword = this.IsAuthorized("User.SetPassword"); // 设置密码
12 this.PermissionUserPermission = this.IsAuthorized("User.UserPermission"); // 用户权限
13 this.PermissionExport = this.IsAuthorized("User.Export"); // 导出数据
14 this.PermissionDelete = this.IsAuthorized("User.Delete"); // 删除用户
15 }
16 #endregion
由于篇幅的限制,我会陆续写文章把疯狂.NET 通用权限设计 C\S后台管理,
B\S前台调用源码式例程序源码下载都提供给大家。
RBAC 只是空洞的理念,只是给你开发的参考,我这个是实实在在的权限实现,可以
在日常开发里直接引用使用,不仅仅是空洞的理论,还有实实在在的配置工具,调用
接口。我们常说,站着说话不知道腰疼,RBAC只是站着说话而已,你还需要腰疼才可以。
就一个字,“实实在在”,脚踏实地,解决我们日常生活中的存在的问题,分享劳动成果,
把自己多年的劳动成果进行商品化,让更多人少去折腾,少走同样的摸索路程,提高生活
质量,提高软件的品质。
通用权限配置工具,就是开发管理类软件的一把枪,有了枪,你战斗起来,比两手空空会
好很多。人活着,我为别人提供服务,别人为我提供服务。能为别人提供服务,是我的荣幸。
导读:
通过命名空间的细微差别,很直白的讲个人的那么点儿小算盘、个人的小利益与公司的大利益
疯狂.NET架构通用权限后台管理工具演示版2.0下载
通用权限实现的核心设计思想
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 如何控制用户显示的菜单权限
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 在页面中的调用权限讲解
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 数据集权限的调用权限讲解
标准权限模型RBAC与实际日常开发工作结合后,我对RBAC模型的改进优化研究成果分享