關於軟體使用權限設定的一點心得體會

來源:互聯網
上載者:User
心得
       本人在軟體開發過程中關於使用者權限處理的一點點心得體會,拿出來與大家共用,希望大家多提寶貴意見。

       以往大多數文章資料設定使用者權限都是通過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;
                               }
                            }
                        }
                     }
                 }
             }
      以上是我在軟體開發過程中關於使用者權限設定的一點點心得體會,希望能夠拋磚引玉。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.