换位思考权限设计(把复杂的问题,简单化才是水平,用简单的道理解决复杂的问题)

我们写程序老会想,人有什么权限,角色有什么权限等,然后设计哪几个表等等,
其实很多时候我们会遇到,哪台电脑可以访问哪台电脑,那台电脑可以上网?哪
个人可以进入那个房间等,哪个部门有什么权限。

为边坝等地区用户提供了全套网页设计制作服务,及边坝网站建设行业解决方案。主营业务为网站建设、成都网站设计、边坝网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

所以,拥有权限的,不只是人,还可以是其他的实体,这些实体不知道什么时候
会遇上什么需求,你总不能遇上一个实际需要,加几个表,把权限判断函数又修
改一下吧?

所以我建议权限的存储结果是就一个表就可以了,其中有很多视图,例如人的权
限是一个视图,角色的权限是一个视图,电脑的权限是一个视图,遇到一个新的
需求,就建立一个视图就可以了。这样你写的权限判断函数就不用修改了,也能
满足任何需要,表也不用没完没了的增加。

说白了,不就是,啥玩意对啥有啥权限嘛?所以我的权限设计的物理存储结构为:
 

换位思考权限设计(把复杂的问题,简单化才是水平,用简单的道理解决复杂的问题)

 

Base_UserPermission 视图的定义为 SELECT * FROM Base_ResourcePermission WHERE ResourceCategory = 'User'
   ResourceID 为 UserID.

Base_RolePermission 视图的定义为 SELECT * FROM Base_ResourcePermission WHERE ResourceCategory = 'Role'
   ResourceID 为 RoleID.

Base_ModulePermission  视图的定义为 SELECT * FROM Base_ResourcePermission WHERE ResourceCategory = 'Module'
   ResourceID 为 ModuleID.

就是 1(表) + N (视图),什么资源有什么权限,所以写一次程序,再也不用
修改了,遇到什么新需求,也是增加了一个视图而已,物理表结构就不用增加了。

当然你系统的权限是固定的,我也建议你这么设计,早晚会遇到各种各样的稀奇
古怪的需求,留下扩展的空间和余地,你觉得看着不顺眼,就把视图建立好,也
相当于真实的一个表,差距不是很大。

虽然说说简单,这也是搞了N年,N个系统,折腾了N次,反复修改了N回权限模块
后,才总结出来的经验,我这么说,你可能会笑我,真的总结出来很不容易的,
我毕竟不是天才,我是普通老百姓,也没人教我指导一下。

本来我想在公司里推一推这个权限设计的思想,还没等我讲,大家先得出了一个
结论,天下不可能有通用的权限设计,那我问问,为什么会有通用的数据库,为
什么还会有通用的操作系统?权限其实也不是非常的难,完全可以通用的,有啥
呀,不就那么点儿东西嘛。

我也多听听大家的,我们很容易变成老顽固,听不进别人的意见,我已经努力了
几年了,经常提醒自己,千万别变成老顽固,那真的落后了。

我这个设计被无数人冷嘲热讽后,2008年的一天,我在南京好朋友哪里进行技术
交流时,我无意间发现,这个权限设计的思想,就是Oracle的权限设计思想,几乎
是一模一样的,我很自豪,因为我当时这么搞的时候,不是先去抄袭Oracle的权限。

我不知道做管理软件的,是不是会觉得Oracle的权限设计是好的还是不好的?我想
在国内的普通设计人员还没有资格说,Oracle的权限设计怎么怎么不好吧?

为什么老外在N年前就能接受这个思想,而且就一直这么用,我们在自己的公司,自
己身边的人推这个思想,都很难很难,遇到各种刁难,阻拦。要么没有一个通用的,
要么就不符合数据库主外键约束,要么不符合设计原理什么的,后来我也懒得跟大家
争来争去的,不用拉倒吧,是你们提高,又不是我提高,对我有啥好处。我自己搞
自己的算了。

 

补充说明一下,以上文章只是我的整体解决方案中的很小一部分,只是一个比较
基础的,大家很容易理解的部分,还有一系列针对各种问题是,到底是如何解决的,我目前还没遇到我不能解决的,当然
前提是不修改权限框架,不修改权限函数,目前我身边遇到的问题,我还不能解决的,没遇到。

整体哪个问题都怎么解决,涉及到我的利益,我不会全部公开出来,毕竟我花费
了很多年的心血,同时也是烧了很多钱,同时整体的解决方法,也是我们公司的财富,大家都会把杀手锏都公布出来嘛?

数据权限,你彻底相通了,也像玩一样,复杂的问题复杂解决了不是水平,用简单的道理能把复杂的问题看得特别透彻,
才是真正的解决问题的本质,数据权限到底如何解决,也有一揽子解决方法和解决思路,给你讲了,你就懂了,不给你讲
你可能要摸索很多年才会悟透,平时开发软件遇到的什么问题,应该怎么解决,也是一整套的方法,这也是为什么有些东
西公开了也无所谓,以为这些简单的,大家想想了也明白了,不难,难的问题,能解决了那就是成套的解决方案,是我赚
钱的看家本领,谁会愿意把自己的真功夫教给大家?微软会把自己的操作系统代码都告诉我们嘛,也欢迎大家洽谈深入的
合作,这么多年,我就研究了这个,用最简单的方法,解决你最难的问题,所以我说话底气才这么足的原因。我别的不行,
就这个行。天天就研究这问题了。

 

收费标准是,1天2000元实施顾问费,一般有2天就解决好了,都讲清楚了
(注:解答你提出95%以上的权限相关问题,回答不了你50%的问题,免费咨询,只能回答你10%的问题,我给你2000元一天的误工费)。 
需要管理工具,1万元一套, 需要整套的源代码,架构思想,那要另外算钱了。
 

联系方式: QQ:252056973
MSN: JiRiGaLa_Bao@Hotmail.com
联系人:吉日嘎拉
联系电话:0571-8890 3169

 

 

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

 


名称栏目:换位思考权限设计(把复杂的问题,简单化才是水平,用简单的道理解决复杂的问题)
文章地址:http://azwzsj.com/article/jejiog.html