程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 關於軟件權限設置的一點心得體會

關於軟件權限設置的一點心得體會

編輯:關於SqlServer

本人在軟件開發過程中關於用戶權限處理的一點點心得體會,拿出來與大家共享,希望大家多提寶貴意見。

以往大多數文章資料設置用戶權限都是通過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++){ /*已經設置權限*/
&n


您正在看的SQLserver教程是:關於軟件權限設置的一點心得體會。bsp; 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")){
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved