当前位置:绿色下载绿色下载文章资讯技术开发NET专区

权限管理的一点思路

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2014-07-24 16:41:16

在一个WinForm项目中的权限管理部分,使用MDI窗体,从主窗体上的menu打开MDI子窗体,对每个子窗体都有一个权限ID,打开时要判断user是否有权限,为了把校验这部分作的通用些,使用了下面的实现:
1.定义一个接口IRight,里面只有一个方法GetRightID,入下:
 

interface IRight
{
   string GetRightID();
}


2.每个MDI子窗体都继承这个接口,在实现GetRightID中返回一个权限ID,例如:
 

public string GetRightID()
{
    return "Customer";
}


3.在主窗体上打开子窗体的地方,加上对权限的检验,例如:
 

Form2 f = new Form2();
if ( UserHaveRight(GetUserRights("Admin",f)) )
{
    f.MDIParent = this;
    f.Show();
}
else
{
    f.Dispose();
}


其中调用的两个函数:
 

private bool UserHaveRight(ArrayList currentUserRights, IRight formWillOpen)
{
   if ( currentUserRights.Contains(formWillOpen.GetRightID()) )
   {
\t return true;
   }
   else
   {
\t return false;
   }
}

private ArrayList GetUserRight(string userID )
{
   ArrayList result = new ArrayList();
   result.Add("Customer");
   result.Add("Premise");
   return result;
}


刚开始时是把GetRightID放在一个窗体基类里,MDI子窗体充这个基类继承然后override这个方法,后来作成从接口继承是考虑到这个接口还可以用在控件上,也就不仅仅是页面级的权限控制。

目前还有一个问题是,在检验时要先生成子窗体的实例,如果检验不通过还要释放掉,就有资源浪费,好在检查权限不通过的情况不多,目前这个办法还是可以接受的。如果有更好的办法,还请大家不吝赐教。

由于公司不能上网,这个post是我写在纸上到网吧里敲上来的权限管理的一点思路代码只是说明问题,没有编译过,象GetUserRight也只是象征性的返回一个权限ID的集合,实际中有可能是DataSet或其他的。
 

 

Tags:权限 管理 思路 MDI窗体

作者:佚名
0 0

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论