当前位置:编程学习 > C#/ASP.NET >>

想找一个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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,