权限管理、用户权限系统、开源用户权限系统、信息化建设标准基础数据管理平台
代码改变世界

走火入魔.NET权限组件-用资源权限(设置权限)思想来解来解决权限的存储问题

2010-07-11 16:29  通用C#系统架构  阅读(2159)  评论(8编辑  收藏  举报

   一个软件并不是B/S的就牛了,或者是C/S的就怎么了,软件的主要目的是为了达到用户的什么目的?QQ为啥不做个B/S的?VS系列为啥不做个B/S的?SAP为啥不做个B/S的?操作系统为啥不作个B/S的?只要能满足客户的需求不管事B/S的C/S的都是可以的,客户是否用起来方便,维护是否方便,定位是否准确比B/S的还是C/S的更重要,一个思想并不在于它是B/S的还是C/S的,而在于是把问题如何巧妙的解决的。

 

   其实权限的存储,看透了,也是很简单的事情,就是 “什么对象对什么资源有什么权限?”把这个逻辑关系能保存好就ok了,你这样设计了,别人也容易阅读你的程序,容易理解你的数据库设计,将来也容易维护一些。

   用一个思想,前后不矛盾的,把整个系统实现出来,也有些不容易,很多环节会出现前后矛盾,思路混乱的情况,所以时刻要提醒自己,自己的权限系统是按“什么对象对什么资源有什么权限?”的指导思想设计的,若有违背了这个思想,那就仔细深入思考,再重新整理思路。

 

什么对象:在系统里确定各种对象的唯一性,需要2个参数,一个是对象的类别,一个是对象的主键,就像是ERP里的入库单(单号)。

什么资源:什么资源,也是一样的,也需要一个分类,一个主键来识别资源的唯一性。

什么权限:最简单的做法,就是有一个权限表,只用主键来识别唯一性,而不是用“哪个模块+哪个功能”来识别权限,那样做过于繁琐了,将来的扩展性、可维护性都会很差一些,不能灵活适应各种复杂的情况。

 

参考权限的存储结构如下:

 

下面是相对万能的权限设置界面参考:

用户资源权限设置如下界面

角色资源权限设置如下界面

当然以上参考界面是,从资源的角度出发,对某个资源,哪些用户哪些角色有什么权限?的角度进行设置的权限页面。

 

存储在数据库中的效果如下:

 

以上界面的思想,也是体现了:“什么对象对什么资源有什么权限?”的核心指导思想。

 

每个软件公司,软件产品,都需要有执著追求的人,追求每一个细节功能的实现,追求每一个用户的反馈意见完美解决,追求不断完善,追求铜墙铁壁的精神,才能作好软件,再简单的软件,真正做透做深都非常不容易,就这么个简单的权限管理系统,我也搞来搞去完善了很多年,更何况一个复杂的应用系统,需要N多人N多年的精心锤炼才能打造出大家喜欢用的精品软件系统来。

 

说得通俗一点儿,我就是输入个内容然后有个查找列表功能就可以了,就这么简单的功能,能诞生出“google,baidu”这样大公司,让我们做个这么简单的功能,有几个人能真正做出来?换成其他的软件系统,也是一样的道理,做个真正功能强大的,好用的软件,都不容易的,没有表面上看上去一样那么简单,特别是模拟过别人系统的人会有这样的感受,不就那么几个功能吗?几天就可以搞定,但是往往模拟了、自己做了后发现,别说几天,几周都做不完。

 

很多事情,并没有你看上去的那么简单,你想象的那么简单,只有自己去做了后才发现,里面的水很深。

 

 

 

 



C# ASP.NET 通用权限设计、通用权限管理、通用权限组件、单点登录、集中式权限管理、统一授权体系、分级管理分级授权


微信扫一扫加好友