WEB开发网
开发学院数据库MSSQL Server 关于软件权限设置的一点心得体会 阅读

关于软件权限设置的一点心得体会

 2007-11-11 05:28:58 来源:WEB开发网   
核心提示: 本人在软件开发过程中关于用户权限处理的一点点心得体会,拿出来与大家共享,关于软件权限设置的一点心得体会,希望大家多提宝贵意见, 以往大多数文章资料设置用户权限都是通过ActionList与数据库中的权限表相联实现,privilege权限字段 */ AnsiString qx=""; for (i=

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

  以往大多数文章资料设置用户权限都是通过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;
                }
               }
             }
           }
         }
       }
    以上是我在软件开发过程中关于用户权限设置的一点点心得体会,希望能够抛砖引玉。

Tags:关于 软件 权限

编辑录入:coldstar [复制链接] [打 印]
赞助商链接