读书人

於Winform中字段限的思路迎

发布时间: 2012-03-03 15:33:03 作者: rapoo

於Winform中字段限的思路,迎批指正!
我在是做的:一限表,保存窗、按、字段的限,是
用、功能(窗、按、字段的名字)、限型(int型,窗和按有限型:允、拒。
字段有三限型:、、可)
界面的代如下:“新增”按的限

C# code
         //用在某窗的限列表。key功能名,如按名。value限型          Hashtable hash = ttaad431mgr.GetHashtableByID(str_usid, this.Name);                     bool auth_AddNew = false;            if (hash.Contains("btnAddNew"))            {                int int_AddNew = (int)hash["btnAddNew"];                if (int_AddNew == (int)Common.PermisionFuntEnum.Permit)                {                    auth_AddNew = true;                }            }            //IsEdit 是否            btnAddNew.Enabled = IsEdit ? false : auth_AddNew;


下面是字段的限:
C# code
           int auth_nama = (int)Common.PermisionFildEnum.Reject;            if (hash.Contains("nama"))            {                auth_nama = (int)hash["nama"];            }            labnama.Tag = auth_nama;//保存限型,“制”中使用                       if (auth_nama == (int)Common.PermisionFildEnum.ReadOnly)            {                txtnama.PasswordChar = Convert.ToChar(0);                txtnama.Enabled = true;                txtnama.ReadOnly = true;            }            else if (auth_nama == (int)Common.PermisionFildEnum.Reject)            {                txtnama.PasswordChar = ' ';                txtnama.Enabled = false;            }            else            {                txtnama.PasswordChar = Convert.ToChar(0);                txtnama.Enabled = true;                txtnama.ReadOnly = !IsEdit;            }


[解决办法]
这个权限控制很好.但是还是存在一些问题,最大的问题就是不灵活,楼主应该能体会到.
1.可以把一些功能宏观化,这样就可以找出规律.例如增 删 改 查,这些都是可以归结到页面级,是否具有对A页面的浏览权限,如果有,那么是否有对数据的增 删 改 查等权限.等等.
2.当然,对于个别特殊功能,是无法抽象出规律的,这个时候就要细化,而不论怎么细化都离不开增 删 改 查这些基本概念.具体功能具体做,这样的特出权限控制的地方应该不多.
3.关于表的设计.这点可以说是最重要的.但是以目前楼主的设计来看,可扩展性几乎没有.主要的原因就是多用户问题,既然有权限控制,那么肯定是牵扯到多用户的.不同的用户对某个功能具有不同的权限,相同级别的用户对某个相同的功能也可能具有不同的权限,这些控制都是相当复杂的.而主要只能归结到表的设计问题上.
这里可以设计表的关联,以数字映射编码的方式减少查询次数以及表的记录数.例如,可以添加一个权限字段,用来保存权限每个页面的权限编码,每个页面作为一条记录.
1,1111 2,0001 例如这个编码,我们可以翻译成,级别为1的用户具有对这个页面的增 删 改 查权限.级别为2的用户具有对这个页面的查看权限.
不多废话了,这个权限的问题,有些复杂,我只能说说自己的观点,具体设计还是要看楼楼主的.主要就是可扩展性.
[解决办法]
早5年前,我就这样用了。用下来感觉还不错,一般的最多的需要后期自定义的权限控制是字段,其他的按钮什么的可以再代码中写死。你可以这样设计权限:

菜单项-->模块

菜单项里面就定义对该模块(对应表的录入界面)的字段的权限(可看、可改、不可见)

读书人网 >.NET

热点推荐