发个牢骚,折磨人的权限设计。

qufo 2007-10-04 09:14:46

小弟最近写了一个MIS的小程序。
但其中客户的权限折磨了我许久。

因为开发周期比较短,所以没有把权限设计得很细,而是硬编码了几个角色,在每个窗体打开的时候检查是否有本窗体打开的权限,结果,客户的权限要求越来越细,最后到了这样的地方。

A用户仅能修改一个34个字段的表中的第1,5,9列。
B用户仅能个性A用户修改过的数据,其他的数据一概不处理,连查都不能查。B修改过后的数据,A就不能再修改了。
C用户仅能查看到其中的 1-13,15-17列
D用户能看到所有的数据,但什么都不能改。
E用户能看到A、B、F、G、H处理的数据,
F用户能看到A、B、H、J处理过的数据,并且可以修改他们的数据。
.......

MD,如果要做到这样,我岂不是要设计一个权限模块,细化到每个列的增删改?
...全文
394 32 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
duset 2007-10-28
  • 打赏
  • 举报
回复
我们系统里面的表格是由数据库的配置表动态设置的
配置表的结构是
权限名 表名(对应某个界面的表格) 字段名 dbgrid控件的属性(isVisible,Readonly,title,width)等

这个在登录界面时重设grid,可以达到按照不用用户权限,可以让他们看见哪些字段,哪些字段不能修改的功能

另外权限设为数字,用统一函数判断.
1,只能查看数据~
2,只能修改自己的数据
.....
等等

程序的逻辑上,gird表的设置优先于权限设置


E用户能看到A、B、F、G、H处理的数据,
F用户能看到A、B、H、J处理过的数据,并且可以修改他们的数据。

这个功能建立一个表
权限名 是否限制 限制Str
然后在查询语句里特殊加上...
love985 2007-10-15
  • 打赏
  • 举报
回复
既然表已经做好了,在表里面增加标记位是最好的方法了,然后再做个公用存储过程进行用户判断,以后修改也很方便
laowang2 2007-10-14
  • 打赏
  • 举报
回复
多加几个字段判断.
cncharles 2007-10-14
  • 打赏
  • 举报
回复
不见得有什么难度
qufo 2007-10-14
  • 打赏
  • 举报
回复
现在麻烦的就是那些字段权限设置。汗。
Elysium 2007-10-14
  • 打赏
  • 举报
回复
可以将权限放入数据库中,然后登录后使用动态菜单加载,不过操作窗口那些数据段若也要动态,工作量就大了
qufo 2007-10-13
  • 打赏
  • 举报
回复
可是客户是上帝,有什么不可以的呢?按他的意见,只是越搅越乱,可是他的每个需求都有他的理由。

能实现这么“自由”的权限控制 吗?
chenzhuo 2007-10-12
  • 打赏
  • 举报
回复
这样的需求出来,我在怀疑就算做出来了,在实际用的时候客户自己都不知道能不能搞得清楚做了些什么!
Michael_ee 2007-10-11
  • 打赏
  • 举报
回复
客户是上帝啊!
qufo 2007-10-10
  • 打赏
  • 举报
回复
谢 wensoft80
这里控制的是同一项菜单下面,打开同一个窗口,对数据列的权限不一样。

谢 suifengoffice
窗体多的话,控制起来和修改起来都很麻烦。。。

谢 hawk_e2e
但这个东西里有 159个表的话,就。。。。
hawk_e2e 2007-10-10
  • 打赏
  • 举报
回复
楼主,教你一个简单方法。
在那有34个字段的表里再加多一字段,存放跟权限有关的信息。
ABCDEF修改数据时,同时更新这字段的标志位。
而他们可操作的数据你就根据这字段的标志位来检索就是了。

这是一个比较快的方法,但不方便扩展。
suifengoffice 2007-10-10
  • 打赏
  • 举报
回复
数据库做的有问题,最简单的方法是多几个窗体用于控制不同的字段,实现权限分配.
24782882 2007-10-10
  • 打赏
  • 举报
回复
做权限表吧。以后现细化。不然更麻烦
sunbiao36 2007-10-10
  • 打赏
  • 举报
回复
还是把表细化吧!
分为几个表!
cdsgajxlp 2007-10-10
  • 打赏
  • 举报
回复
需要增加一个模块,该模块处理所有的权限事务

每个要求权限控制的表至少多建一个字段,放权限信息(新建的时候添该用户的基本信息)

新增加的模块有分配权限的功能,比如A能查B,c,d的权限,而f的确不能操作
建操作权限表,把操作这些信息的数据记录在一个表中

操作数据的时候,根据权限表中的数据操作(比如只能查,或者只能修改,只能修改哪些字段)

这些是麻烦,不过很实用
qufo 2007-10-09
  • 打赏
  • 举报
回复

没有,这个问题到现在没有想到根本的解决方案,除非把需求改一改。

warmworm 2007-10-09
  • 打赏
  • 举报
回复
兄弟
重构吧
AP 2007-10-09
  • 打赏
  • 举报
回复
最简单的思路

不同的权限复制出不同的Form即功能相近的窗口

优点:不易出错 易于修改
缺点:工作量大
wensoft80 2007-10-09
  • 打赏
  • 举报
回复
如果是菜单权限,可以用Tag,和一个权限表,+一个人员表控制,
其它的如添加删除权限可以仪类似的方法去做

如果你自己做,最好有一套自己的,且完整的权限管理模块
wensoft80 2007-10-08
  • 打赏
  • 举报
回复
问题解决了吗?
加载更多回复(12)

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧