大放血高分求方案!!MIS系统的权限管理方案。(100分)

  • 主题发起人 主题发起人 王森章
  • 开始时间 开始时间

王森章

Unregistered / Unconfirmed
GUEST, unregistred user!
MIS系统的权限管理问题。
对于理想的方案我们会有200分奉上,这一百份回复者人人有份!!!
我们的系统有多个模块比如:系统管理、库存管理、设备管理
综合查询、统计、生产计划、质量管理,每个模块有多个功能比如库存管理有出库管理、
入库管理、调库管理,在每个界面上可能有多个按纽,但是有的人只能查询,有的人可以
读写。我们现在就是要做到,要控制每个人对每个界面,每个菜单项,每个按钮的访问权
限,当然如果能控制到每个字段就更好了!!!
我们现在的想法也是最简单的方法,即把每个用户可用的所有的界面、按纽、菜单都放入
一个表中,到时候动态设定,可是有一个性能问题:数据量太大如果有100个用户每个用
户最少有上百个按纽可用,那数据量也就太大了。而且好像也不科学。
所以球更好的解决方案!!!
 
你在哪里啊,我可以帮你解决问题啊!
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=958559
 
my email: npu10162wsz@163.net
 
介绍一下我的权限处理:
权限名称表
Rightid ,Name, AppId--系统Id
再设置用户组
GroupId ,GroupName, AppId
用户表
Userid name , GroupId

配置权限表
GroupId, RightId

当用户登录时检测他的组和权限,然后分别对应于不同得功能
QQ:99135082
 
》有100个用户每个用户最少有上百个按纽可用
这么复杂? 要搞FBI啊?
 
要明确知道你权限管理是否要分这样细,数据量大小到是其次,
我想你的用户一定会跳起来,要设如此多的权限

你应该先进行功能进行分组,
例如某些操作实际是一种功能
然后在对用户分组
最后定义用户所属组
 
我觉得对用户权限进行分类比较合适,比如数据录入权、修改权、查询权、打印权,系统维护权
等,根据权限进行相应的控制。在我所做的几个系统中,我一般都是这样分配权限的,将用户的
权限用一个字符串来表示,在每个模块的ONSHOW事件中,检测用户的权限,根据权限确定用户能
够进行哪些操作。
 
呵呵,荷塘兄,我觉得一个权限用一个字符来表示可以省空间,你说是不是?
 
微软的windows 提供了很好的例子:用户分组:administator,power users,users.
权限分为只读,读写,完全控制。既然微软认为分成这样既可控制用户了,我想你的
系统也差不多吧。
 
是个,我一般是用“0”和“1”来表示权限的有与无的,比如有6种权限分类,我一般用
“110010”之类的字符串表示,“1”就表示有某种权限,“0”则相反。
 
to 荷塘新月:其实你完全占用一个十进制数就可以搞定:
比如权限为:1 2 3 4 5 6
当权限为:37时, 权限为:6,1 (6*6+1)=37
当权限为:14时,权限为:1,2,

 
我还有200分,请大家,踊跃发言
 
1、 客户端界面限制方式:
这种方式的特点是根据用户的权限用代码来设定界面中的功能对象(对Button, Menu)
Visible或是Enabled来达到权限管理的目的。这种管理方式一般用于单机或C/S版本。但客户端可能被破解。
实现的方法是将客户端的所有功能做为一个列表放到一个服务器表中,根据用户的ID
来绑定功能对象的Enabled或是Visible。
典型的例子是使用ActionList来完成这样的操作。

2、数据库服务器管理方式
这种方式的特点是使用数据库本身提供的管理功能来管理用户的权限。这种方式可用于单机、C/S或是三层结构,但这种操作方式限制较大。
操作的方法看具体数据库提供的安全管理功能

3、在中间层验证的方式
  这种方式的特点是客户端每次调用中间层的方法时都要验证是否有调用这个方法的权利。这种方式只用于三层结构的程序。
实现的方法是将所有中间层的方法做为一个表存放到服务器中,将用户ID和表中的功能绑定,当客户端调用时根据用户ID判断用户是否有访问此方法的权利。

在三层中使用3、1应当是很完美的做法。
 
通过数据库表对TACTIONLIST的属性设置来达到对权限的控制
 
曾经使用过2、数据库服务器管理方式,不过死得很难看。
为数据库增加用户显然是不明智的。

现在正在写1、的程序。

不过1、3没有考虑对部分数据的权限。呵呵。
 
To zlj555,
你的权限算法是怎么算的?我怎么不明白?
 
全放入action list中去,这样可以在程序中自动的将所有的权限读入表中去

然后在表中可以控制visible ,enabled等属性
 
后退
顶部