中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > 数据库综合
关于软件权限设置的一点心得体会
作者:未知 时间:2002-10-01 12:12 出处:Blog 责编:chinaitpower
              摘要:暂无

       本人在软件开发过程中关于用户权限处理的一点点心得体会,拿出来与大家共享,希望大家多提宝贵意见。

       以往大多数文章资料设置用户权限都是通过ActionList与数据库中的权限表相联实现。我经过实践通过控件的Tag属性(每个控件都有一个保留的Tag属性,默认值为0),也可以实现权限的设置,下面我就具体说明实现方法。

      1、将所有需要设置权限的菜单和按钮的Tag属性从1开始分配不重复的阿拉伯数字(1,2,3......),这里不用0(控件Tag属性的默认值),表示此控件不需做权限设置。

      2、将所有权限名称加到CheckBoxList中,包括菜单和按钮,其顺序一定要与分配阿拉伯数字的顺序完全一致。

      3、在数据库中建立操作员表(包括编号、姓名、权限)权限用一个只包含0和1的字符串表示。用0表示有相应的权限(对应的菜单或按钮可用,Enabled=true),用1表示没有相应的权限(对应的菜单或按钮不可用,Enabled=false)。这个字段要设置足够长(我预留了50位),以备扩充之用。

      4、设置权限主要代码如下:

       /* qx,用户权限字符串,operator操作员表,privilege权限字段 */
       AnsiString qx="";
       for (i=1;i<=CheckListBox1->Items->Count;i++) {
            if   (CheckListBox1->Checked[i-1]) {
                 qx=qx+"0";
            } else  {
                 qx=qx+"1";
            }
        }
       Sql="update operator set privilege='"+qx+"'  where Operator_name='"+CboOperatorName->Text+"'";  
       5、设置用户的全局变量,在窗体的FormShow事件中加入权限判断代码如下:

            /* 系统管理员具有所有权限 */
            if (FrmDM->GetUserName()!="系统管理员"){
            AnsiString qx;
            /* 还没有设置权限 */
            if (strPrivilege.Length()==0){
               for (int j=0;j<=Parent->ComponentCount-1;j++){
                    if (Parent->Components[j]->Tag!=0){
                       if  (Parent->Components[j]->ClassNameIs("TMenuItem")){
                            ((TMenuItem *)Parent->Components[j])->Enabled=false ;
                       } else  {
                          ((TButton *)Parent->Components[j])->Enabled=false;
                       }
                    }
                }
            } else  {
               for (i=1; i<=strPrivilege.Length();i++){   /*已经设置权限*/
                    qx=strPrivilege.SubString(i,1);
                    if (qx=="1"){
                       for (j=0;j<=Parent->ComponentCount-1;j++) {
                            if (Parent->Components[j]->Tag==i){
                               if  (Parent->Components[j]->ClassNameIs("TMenuItem")){
                                   ((TMenuItem *)Parent->Components[j])->Enabled=false ;
                               }  else  {
                                   ((TButton *)Parent->Components[j])->Enabled=false;
                                   break;
                               }
                            }
                        }
                     }
                 }
             }
      以上是我在软件开发过程中关于用户权限设置的一点点心得体会,希望能够抛砖引玉。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有