如何防止偷吃禁果?200分心甘情愿:~(200分)

  • 主题发起人 主题发起人 mumu
  • 开始时间 开始时间
M

mumu

Unregistered / Unconfirmed
GUEST, unregistred user!
这个问题让我那不定注意?到底采用什么样的方案解决比较合理。

一个网络版MIS系统——比如人事管理或图纸管理系统吧,数据库里有一些表,表中每条记录需要管理一些原文信息(比如照片、合同、简历……)。

系统需要对用户的访问进行一些权限控制,简单分为:

1、数据库表访问权限:即给用户分配读或写某个表的权限。

2、个别字段访问权限:即给用户分配读或写某个表中某些字段的权限;

3、特殊记录访问权限:给用户分配读或写表中某些特定记录(比如记录中“秘级”字段为机密以上的记录)的权限。

4、特定原文访问权限:给用户分配读或写某条记录中某几个原文(比如一条记录中对应3个原文,只许指定用户读其中2个,写其中一个)的权限。

不同用户以其身份登陆系统后,享有各自不同权限,比如用户A登陆系统后,可以读写人员考勤表中除人员姓名外其他字段;用户B只读库存表中除价格以外其他字段;用户C可以读写所有表中所有字段信息……。

请问有什么好的解决方案?谢谢!

 
你的用户是通过 MIS 系统来访问数据库的,这些逻辑完全可以放在客户程序里面做。
 
程序控制呗!
咱们不就是干这个的吗?
 
这个问题要兼顾描述的清楚和方便,我认为关键是作好分类和分层;
一个权限的描述应该包括级别(象你列出的4种)、操作(浏览、修改、删除等)、
对象(具体的表名,字段名等)和条件(相当于参数)等——有点象函数的定义:)

在具体实施上,比如可以给用户表加一个memo(text)型的权限字段,
用文字或特殊的字符把若干个权限分隔开,也把每一个权限描述的各个要素分开,
剩下的就是字符串的处理问题了。
 
我还以为有人要做太临呢!
唉,这样的只能在程序中控制吧!有点麻烦!
 
大型数据库本身自带字段级、记录级的权限控制的,如 oracle。
不通过数据库本身,而在客户程序中自己加控制,也可以。但你无法防止别人不通过
你的程序而直接访问数据库,这样一切都保不了密了。
 
谢谢,这样只能解决一般的权限划分问题,现在就是这样处理的,不过对我说这个系统,
我总觉得不对劲。主要是系统中权限划分特别烦琐:
问题一、二好办,关键是如何高效解决问题三、四:

问题三中需要指定的特殊记录是临时指定的——比如对同一个表,用户A有读“秘级”为
机密以上的记录的权限,用户B有读写“来文者”为“省工行”的记录的权限……。

问题四更麻烦,用户或用户组利用原文的权限是逐份指定的,并且还有时间限制——
  比如用户C的权限是:只能查看由系统管理员指定开放的某几条记录的几份原文。
  而用户D的权限是:只能在2000年12月1日到2001年2月1日之间调阅
数据表中“制图者”字段值为“设计院”的记录中指定的某些图纸原文。

  系统数据量比较大——表记录一般在10万条以上,峰值用户可能有上百个。

  俺笨嘴拙舌,也不知道各位兄弟听懂没有,各位就按各自理解来讲吧,郢书燕说,
也能惊醒梦中人:)
 
怎么就越看越象我想到重庆应聘那家公司说的什么‘3S’技术啊!
也是什么图形信息数据库啊!
其实用SQL建表的时候就能对每个字段做权限分配哦!
你是对现有的表添加这些功能还是刚开始做哦!
 
将权限抽象一下不就行了吗?
 
你是用什么数据库?
 
这本身不难,但有点烦。
 
可以设定一个权限数据库,只是比较烦,而不是难。
然后把什么公开密要、密码认证、安全证书、getwaykeeper等东西加进去。
 
各位兄弟听真:
1、我最主要的目的是如何“高效”的解决这个问题?不要写死,也就是方案要有充分的
  柔韧性。
2、这个程序要在各种数据库上跑,也就是用的数据库不可知。
3、用户和用户权限是灵活可变的,最好支持用户多层分组——即“XX集团”组下有
  “XX分厂”组,再下有“XX部门”组,……,直到最下“个人用户”。每一层
  都有相应权限。
  …………
  我正打算按照Chenlili的思路走,但如何作一个通用的权限控制方案呢?

 
不是我吝啬,大伙给个说法呗:(
 
我觉得,你关键要抽象化权限并进行分类。然后
做在中间层。超级用户有权更改设置就行了。实际上,大型软件都是这样做。
这个问题不难,关键是冷静加细心。
 
谁再来补充两句,我就开始给分:)
 
就是用程序控制,可写一个通用函数根据系统登录人的权限分情况处理
 

Similar threads

回复
0
查看
1K
不得闲
回复
0
查看
867
不得闲
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
890
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部