刚做了个通用权限控制的控件,谁想要?(0分)

  • 主题发起人 主题发起人 sslxml
  • 开始时间 开始时间
到http://www.delphibbs.com/delphibbs/dispq.asp?lid=2497419 去,我快结帐了。
寄到freemail_000@163.com
 
呵呵,争论的有些激烈了。其实我觉得技术上的讨论可以语气缓和点的。

我自己也做过很多系统,每次我都想做一个通用的权限控制。可是每次得到的都不同。我也就想借宝地说说我的看法。我认为,权限管理具备一定的通用性,可是根据特定的系统也有自己的特殊性。

首先,我也是通过Taction去管理权限的,我基本赞同以下的观点:

《来自sslxml:
我说的是一个通用的权限控制框架,你如果想要控制SQL Server的权限控制,可以
使用1、SQL Server自己的增加用户、组等功能,通过xp_xxx_xxx等来实现;2、通
过对SQL Server某些字段加密,然后通过客户端解密使用;3、通过Delphi、C++等
程序扩展SQL Server的存储过程,使用你自己的存储过程加密你的数据,外部调用
你的存储过程,4、……
如果SQL Server足够安全,可以考虑在连接上(链路层)上进行某些扩展,如果都
足够安全,不妨做将权限控制做到客户端!》

第二,我是这个想的,如果把功能都做到用户上。那么在用户多的时候的确是烦琐不堪的。怎么办呢?我解决的办法就是通过建立一系列表,通过一个程序外的系统权限管理实施。
1。首先是管理员表(为什么叫管理员表而不叫用户表呢,是因为用户其实是我想监控的那个系统的用户,他们的权限又由他们的系统决定,我所控制的是管理那个系统的管理员权限。)和管理员组表。他们是多对多的关系。这2个表的内容都要用密码加密(当然是可逆的)。
2。系统的建立3层。应用表,模块表和功能表。按照顺序都是1对多的关系。这3个表的内容都也要用密码加密(应考虑用不同的加密法。)。
3。建立[管理员组表和功能表]的关系表。管理员组和功能表是多对多的关系。这个最关键的当然要加密。管理员和功能的配置就通过它来描述。
4。应用上,设置每个表的默认值和系统值。(例如管理员表就包括名称,密码,建立时间,默认值,系统值等等字段。。。)这样一来,首先在解决安装时刻自动生成系统值。然后在增加的时刻自动选择默认值,可以减少输入。
5。建立权限管理系统。这么一个系统就可以统一监控不同的系统和软体的权限问题。
6。具体的应用程序的权限操作管理和sslxml所作的方式的是一样的。在各个具体应用程序中,每个木块下的每个功能ACTION都根据上述的结构去控制此管理员的可执行与否。


三。未了的问题。(555,需要解决的问题总还是太多。)那么。对于数据库层面的权限又该如何解决呢。表面上好像是我们在每个具体的被我们的权限管理程序管理的应用上面建立对数据的具体权限就可以了。这样一来,我们针对每个应用的权限action就有控制。但是事实上对于数据库的管理还是没有彻底解决。虽然好象对于权限控制了,可是对于数据库的访问还没有彻底的监控呢。我们建立权限管理的目标还没有完全完成。
现在我是这么规划的:
1。建立数据库表(包括数据库名称,类型,建立时间等字段。。。),数据库对象表(包括表,关系),对象内容表(。。。)。
这么三级别就把整个数据库包括进去了。这么做的意外的额外的好处是我们可以随时自动生成所有我们的数据库。
2。建立加密方法组表和加密方法表。(当然了,它本身的加密是最重要的。它被破解就没秘密了。)
3。建立[数据对象表和密码方法组]的关系表。把各个对于表或者关系对应起来。
4。建立数据库加密解密系统。功能实现最主要包括,对于各个具体的加密与解密(都是可逆的,这个是缺陷啊。。555)进行动态的管理。定时对于不同级别的东西按照加密的的需要进行不同的动作。定期的在数据应用停止服务的时刻更换加密解密方法。

四。对于所有的数据库建立完善的备份系统。我们之所以要建立权限的管理,那肯定是多管理用户在网络上的访问,可能通过局域或者因特网等不同方式访问。对于服务器的管理就无需多所了。那么,如果我们准备一台备份电脑(最好锁在保险柜里!),专门对服务器进行备份,他除了和服务器连接以外,不跟任何的其他机器连接。呵呵,有了这个以后,我们的(三)里的问题才能放心的去做。

[:)]
 
严重同意whsunbin的说法。
 
给我发个演示

xinyuanxp@sina.com

分可给你更多!
 
后退
顶部