您的位置:首页 > 职场人生

标准权限模型RBAC与实际日常开发工作结合后,我对RBAC模型的改进优化研究成果分享

2012-03-06 18:02 316 查看
我经常是实践出理论,其实理论指导实践会更省力一些,再出理论是正确的做事方法,

有些人过于迷信理论,有些人过于务实,都是有所缺点的,我是属于那种过于务实派,哈哈。

什么叫水平,不在于用复杂的方法解决简单的问题,而在于用简单的方法解决复杂的问题,

问题深入简出,搞定个彻底。虽然我对权限的研究登不上大雅之堂,但是我们日常工作中

经常会遇到类似问题,特别是对初学者来讲,往往是云里雾里,对做一些实实在在项目的

人来讲,的确有这么一个实实在在的工具可以节省很多力气。

RBAC也不是什么完全的真理,也有很多缺点,不是老外弄出来的标准就是真理,国人也

需要弄出来点儿东西,有时候我们会更行,我们不能自大但是我们不能迷信RBCA。

我们不只是学习别人的,更需要提高自己,超越别人的研究,我们要比老外也研究得透彻。

虽然我不是学者,但是我本着研究透彻的理念,一直没有放弃对权限的研究,虽然本人不

才,前前后后坚持了10年不放弃对权限的研究,也成了我最大的业余爱好之一。

操作系统能否通用?数据库能否通用?论坛能否通用?大家都知道,这些都是可以的,你

可能有很多不同的需求,但是这些都能满足,但是真满足吗?未必,有些需求是荒谬的,

被驳倒了,有些需求,这些通用的东西还无法实现,你需要2次开发。

权限能否通用?一样的,完全可以通用,你个性化的需求需要进行2次开发,有些需求是

荒谬的,是因为你的无知提出了稀哩啪啦的不成立的互相矛盾的需求,权限也是可以通用

的,我们国人有时候太封建,太过于传统,才导致很多好东西都是老外发明的,我们有时

候需要更开放的思想,接纳一些新思维、新提倡,我们更需要的是创新思想。

这几年,我也感觉了一下,为什么我们中国式思想,搞不出啥玩意儿来,就是因为中国人

把问题想的过于复杂,我们中国人能把简单的问题复杂化,但是没有能力把复杂的问题简

单化,这也是导致,中国人没能开发出 CPU、操作系统、数据库系统、开发环境、开发语

言。中国人都在搞万能的快速开发平台,难道微软傻瓜了,微软人的人都成猪了?不开发

出来中国人想象中的万能快速开发平台?拖拖拉拉,老大妈也能开发出管理系统的神奇系统?

我们的头脑是孙悟空,老外的头脑是变形金刚,这就是我们的思想的差距,我们能一步登天。

我们头脑想问题太复杂了,不像老外那么简单化,反而我们失去了大聪明,我们是小聪明。

废话少说,只奔主题:看图



我想通过6个方面,来验证一下我的权限的通用型,当然我的这么一个小工具不是万能,

但是有2次开发的接口,你也可以在我的基础上进行2次开发,可以做不同的展示页面,

可以写个性化的权限需要的函数,当然在不修改程序的前提下就可以满足大部分的日常

管理软件的权限需求,这是我所追求的。

我主要讲解的6个方向为:

1。操作权限,按钮级权限

2。拒绝权限,反正常思维的权限

3。单元格权限,脑筋急转弯的权限处理方式

4。数据列权限,字段列级权限

5。数据集过滤权限,数据行级过滤权限

6。页面级权限,模块菜单权限处理

有一个网上的朋友说得很好,“权限至少是要分三个层次,分别为页面级别、按钮级别、数据级别”,

的确说得非常有道理,我的通用权限设计应该是完全满足这3个层次上的需要的。

传统的RBAC权限模型的设计为:





3-4年前,我们按RBAC的设计思想,来实现通用权限,但是系统虽然是成功上限了,

但是权限的定义及调用还是感觉很不灵活,多个人同时开发很容易导致权限定义混乱

的局面,感觉对资源+操作的权限定义,在实际开发中不够灵活,操作过于笨重,我

对RBAC进行了改进,将权限定义进行简化不把权限定位为资源+操作,而是定位为

“资源.操作”不再分开,而是进行了合并了,经过接下来的3-4年实践证明,

“资源.操作”非常灵活,定义权限简单,操作简单,程序调用起来也很简单。

改进为入下图的权限定义模式



在实际程序中判断权限,就变得很简单了,类似以下代码判断就可以了。

1 #region private void GetPermission() 获得权限

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模型的改进优化研究成果分享

将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐