想找一个winform下权限控制的实例
权限控制的方式随便(可以使用角色,也可以控制单个用户对某个菜单的访问)关键是控制到该菜单下单个用户(或角色)的新增,修改,删除权限。
在网上找了几天,一直没找到。
实例要带源代码和数据库
--------------------编程问答-------------------- 沙发,帮忙顶 --------------------编程问答-------------------- 沙发,帮忙顶 --------------------编程问答-------------------- 自己写了,我也在搞这一块
--------------------编程问答-------------------- private void Save()//設置群組或者個人權限
{
try
{
clbSystemManage.RightManage.RightControl clsRC1=new clbSystemManage.RightManage.
RightControl();
if(clsGol.CurrUser_Account.ToLower()!="admin" )
{
bool hadRight=clsRC1.CheckRight(clsGol.CurrUser_GUID,"Sys002");
if(!hadRight)
{
MessageBox.Show("無權限","提示!");
return;
}
}
this.gridView2.CloseEditor();
string[] arrRightID=new string[1000];
for(int i=0;i<arrRightID.Length;i++)
{
arrRightID[i]="";
}
int j=0;
clbSystemManage.RightManage.RightControl clsRC=new clbSystemManage.RightManage.RightControl();
this.gridView2.ClearGrouping();
for(int i=0;i<this.gridView2.RowCount;i++)
{
if(this.gridView2.GetRowCellDisplayText(i,"恁寁")=="Checked")
{
arrRightID[j]=this.gridView2.GetRowCellDisplayText(i,"癹ID");
j=j+1;
}
}
if(sType=="1")//Save PersonRight
{clsRC.SavaRight(this.sCurrPersonGUID,arrRightID);}
else
{clsRC.SavaRight(this.sCurrGroupGUID,arrRightID);}
MessageBox.Show("悵湔傖髡ㄐ","枑尨");
this.gridView2.Columns[2].Group();
this.gridView2.ExpandAllGroups();
}
catch(System.Exception ee)
{
throw ee;
}
} --------------------编程问答-------------------- public bool CheckRight(string vPGGUID,string vRightID)
{
bool reV=false;
CommonInte易做图ce comm = CommonFactory.CreateInstance(CommonData.sql);
try
{
string sSql="";
sSql="select * from Sys_Right where PGGUID='"+vPGGUID+"'and RightID= '"+vRightID+"'";
DataTable pDT=comm.ExeForDtl(sSql);
if(pDT.Rows.Count>0)
{
return true;
}
else
{
string str="";
str="select GroupGUID from Sys_GroupPersonLink where PersonGUID='"+vPGGUID+"'";
DataTable pDT1=comm.ExeForDtl(str);
if(pDT1.Rows.Count>0)
{
for(int i=0;i<pDT1.Rows.Count;i++)
{
string sSql2="";
sSql2="select * from Sys_Right where PGGUID='"+pDT1.Rows[i][0].ToString()+"'and RightID= '"+vRightID+"'";
DataTable pDT2=comm.ExeForDtl(sSql2);
if(pDT2.Rows.Count>0)
{
reV=true;
return reV;
}
}
return false;
}
else
{
reV=false;
}
}
return reV;
}
catch
{
comm.Close();
return false;
}
} --------------------编程问答-------------------- public bool SavaRight(string vPGGUID,string[] vRightID)
{
CommonInte易做图ce comm = CommonFactory.CreateInstance(CommonData.sql);
try
{
comm.BeginTrans();
string pSql1="";
pSql1="delete from Sys_Right where PGGUID='"+vPGGUID+"'";
comm.Execute(pSql1);
for(int i=0;i<vRightID.Length;i++)
{
string pSql="";
if(vRightID[i]!="")
{
pSql="Insert Into Sys_Right ("
+"PGGUID,RightID)"
+" Values ('"+vPGGUID+"','"+vRightID[i]+"')";
comm.Execute(pSql);
}
else
{
i=10000;
}
}
comm.CommitTrans();
comm.Close();
return false;
}
catch
{
//隙幗
comm.RollbackTrans();
comm.Close();
return false;
}
} --------------------编程问答-------------------- 刚写完这一块,一两句说不清.帮顶一下吧 --------------------编程问答-------------------- 该回复被版主删除 --------------------编程问答-------------------- 该回复被版主删除 --------------------编程问答-------------------- 我感觉这一块是系统经常用的,具有通用性。
我花了几天时间看了微软的企业程序库,结果发现它把适合Winform 程序,因为权限的控制无法做到数据库级。因为它是基于config文件的。分发后再也无法控制。还要我们希望没有权限的菜单用反白显示,就这一点,企业程序库就无能为力(是我没有理解?)。好像到了一家饭店,服务员不告诉被人有什么东西吃,顾客叫到什么,就说没有(你没有权限)。
我想应该把这一块做成模板,用户可以配置数据库及字段
--------------------编程问答-------------------- 正在写,很迷糊。。。。。。。。 --------------------编程问答-------------------- 需要這個部分知識和代易做图 。
补充:.NET技术 , C#