zoukankan      html  css  js  c++  java
  • 关于软件权限设置的一点心得体会

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

           以往大多数文章资料设置用户权限都是通过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;
                                   }
                                }
                            }
                         }
                     }
                 }
          以上是我在软件开发过程中关于用户权限设置的一点点心得体会,希望能够抛砖引玉。
  • 相关阅读:
    Ubuntu kylin 14.04 安装问题未解决
    C 语言实例
    C 语言实例
    C 语言实例
    C 语言实例
    C 语言实例
    C 语言实例
    C 语言实例
    C 语言实例
    C 语言实例
  • 原文地址:https://www.cnblogs.com/chenbg2001/p/1997101.html
Copyright © 2011-2022 走看看