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

  1. 云栖社区>
  2. 博客>
  3. 正文

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

技术小阿哥 2017-11-27 09:34:00 浏览696
展开阅读全文
我经常是实践出理论,其实理论指导实践会更省力一些,再出理论是正确的做事方法,
有些人过于迷信理论,有些人过于务实,都是有所缺点的,我是属于那种过于务实派,哈哈。

什么叫水平,不在于用复杂的方法解决简单的问题,而在于用简单的方法解决复杂的问题,
问题深入简出,搞定个彻底。虽然我对权限的研究登不上大雅之堂,但是我们日常工作中
经常会遇到类似问题,特别是对初学者来讲,往往是云里雾里,对做一些实实在在项目的
人来讲,的确有这么一个实实在在的工具可以节省很多力气。

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



将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。




本文转自 jirigala 51CTO博客,原文链接:http://blog.51cto.com/2347979/448331,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
技术小阿哥
+ 关注