利用BasePage实现WEB窗体权限控制

文/jeff377  出处/博客园

摘要
若窗体(页面)具有「执行、新增、修改、删除」等操作权限控管,可以使用列举来描述使用者在该窗体的权限,详细的作法可以参考下面的「Enum 的设计与应用 - 简易权限设计」这篇文章。在此我们将利用这种列举的方式来描述窗体权限,并由 BasePage 来处理窗体权限的控管。

程序说明及实作
首先定义 EFormActions 列举,来描述窗体操作权限。

Code


新增一个 TBActionPage 类别,继承至 System.Web.UI.Page 或自订的底层 BaseForm,做为权限控管的 BaseForm。首先新增一个 UserActions 属性,来描述使用者的窗体操作权限,在 OnInitComplete 方法中,第一次加载此窗体时取得使用者的窗体权限,即设定 UserActions 属性,此属性会储存至 ViewState 中,使下次页面 PostBack 时无需再重新取得窗体权限。另外新增 CheckUserActions 方法,供检查使用者是否具有指定的窗体操作权限。

Code


测试程序
为测试使用,在上述的 TBActionPage 的 OnInitComplete 方法,直接设定具有「执行/新增/修改」权限;正确的作法应该是呼叫中间层传入该窗体的识别码来取得使用者在该窗体具有那些权限,并在此设定 UserActions 属性值。

Me.UserActions = EFormActions.Execute Or EFormActions.Add Or EFormActions.Update
新增一个测试页面,继承至 TBActionPage,当按下按钮时利用 CheckUserActions 使用者具那些权限并输出。

Code


执行结果如下

 附件: 您所在的用户组无法下载或查看附件

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [Asp.Net] 的这些文章也感兴趣:

ASP.NET在VS2008与.NET FX 3.5中增强的功能
为什么会出现ASP.NET平台下的MVC框架?
ASP.NET2.0中改进的缓存功能
Asp.Net中的脚本回调和Server.Transfer页面传值
缩略图多路径多格式保存
VS.NET 2005 Beta 2初体验(1)-用C#开发Managed代码
ASP.NET MVC Preview 5 演示Demo #7
ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第七篇:闲话ASP.NET MVC
DataGrid学习四
用ASP.NET编写多层架构的系统