您的位置:首页 > 其它

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

2012-02-27 14:29 465 查看
我们写程序老会想,人有什么权限,角色有什么权限等,然后设计哪几个表等等,

其实很多时候我们会遇到,哪台电脑可以访问哪台电脑,那台电脑可以上网?哪

个人可以进入那个房间等,哪个部门有什么权限。

所以,拥有权限的,不只是人,还可以是其他的实体,这些实体不知道什么时候

会遇上什么需求,你总不能遇上一个实际需要,加几个表,把权限判断函数又修

改一下吧?

所以我建议权限的存储结果是就一个表就可以了,其中有很多视图,例如人的权

限是一个视图,角色的权限是一个视图,电脑的权限是一个视图,遇到一个新的

需求,就建立一个视图就可以了。这样你写的权限判断函数就不用修改了,也能

满足任何需要,表也不用没完没了的增加。

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



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

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