当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:20:00  来源:本站整理

关于软件权限设置的一点心得领会[MSSQL防范]

赞助商链接



  本文“关于软件权限设置的一点心得领会[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

       本人在软件开辟历程中关于用户权限处理的一点点心得领会,拿出来与大家同享,但愿大家多提贵重看法.绿色c hinaip ower. comw6gK8

       以往大大都文章资料设置用户权限都是通过ActionList与数据库中的权限表相联实现.我经过实践通过控件的Tag属性(每个控件都有一个保存的Tag属性,默许值为0),也可以实现权限的设置,下面我就具体阐明实现办法.绿色c hinaip ower. comw6gK8

      1、将全部需求设置权限的菜单和按钮的Tag属性从1开始分配不反复的阿拉伯数字(1,2,3......),这里不用0(控件Tag属性的默许值),表示此控件不需做权限设置.绿色c hinaip ower. comw6gK8

      2、将全部权限名称加到CheckBoxList中,包含菜单和按钮,其次序一定要与分配阿拉伯数字的次序完好一致.绿色c hinaip ower. comw6gK8

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

      4、设置权限主要代码以下:绿色c hinaip ower. comw6gK8

       /* 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事件中加入权限判断代码以下:绿色c hinaip ower. comw6gK8

            /* 系统管理员具有全部权限 */
            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;
                               }
                            }
                        }
                     }
                 }
             }
      以上是我在软件开辟历程中关于用户权限设置的一点点心得领会,但愿可以举一反三.
绿色c hinaip ower. comw6gK8

  以上是“关于软件权限设置的一点心得领会[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 关于软件权限设置的一点心得领会
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .