Skip Navigation Links
技术文档
·网站建设
·软件使用
·图形设计
·程序开发
·网络应用
·电脑技巧
 
公司介绍
·公司简介
·索仕SRCOS网络应用平台
·索仕网站管理系统
·影视广告制作
·联系我们
 
 

利用 BasePage 实作窗体权限控管

8/1/2008 5:16:48 PM

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

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

    ''' <summary>
利用 BasePage 实作窗体权限控管    
''' 窗体操作权限列举。
利用 BasePage 实作窗体权限控管    
''' </summary>

利用 BasePage 实作窗体权限控管    <Flags()> _
    
Public Enum EFormActions
        
''' <summary>
利用 BasePage 实作窗体权限控管        
''' 无。
利用 BasePage 实作窗体权限控管        
''' </summary>

利用 BasePage 实作窗体权限控管        None = 0
        
''' <summary>
利用 BasePage 实作窗体权限控管        
''' 执行。
利用 BasePage 实作窗体权限控管        
''' </summary>

利用 BasePage 实作窗体权限控管        Execute = 1
        
''' <summary>
利用 BasePage 实作窗体权限控管        
''' 新增。
利用 BasePage 实作窗体权限控管        
''' </summary>

利用 BasePage 实作窗体权限控管        Add = 2
        
''' <summary>
利用 BasePage 实作窗体权限控管        
''' 修改。
利用 BasePage 实作窗体权限控管        
''' </summary>

利用 BasePage 实作窗体权限控管        Update = 4
        
''' <summary>
利用 BasePage 实作窗体权限控管        
''' 删除。
利用 BasePage 实作窗体权限控管        
''' </summary>

利用 BasePage 实作窗体权限控管        Delete = 8
        
''' <summary>
利用 BasePage 实作窗体权限控管        
''' 全部。
利用 BasePage 实作窗体权限控管        
''' </summary>

利用 BasePage 实作窗体权限控管        All = Execute Or Add Or Update Or Delete
利用 BasePage 实作窗体权限控管    
End Enum


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

Public Class TBActionPage
利用 BasePage 实作窗体权限控管    
Inherits System.Web.UI.Page
    
''' <summary>
利用 BasePage 实作窗体权限控管    
''' 使用者权限。
利用 BasePage 实作窗体权限控管    
''' </summary>

利用 BasePage 实作窗体权限控管    Private FUserActions As EFormActions = EFormActions.None
利用 BasePage 实作窗体权限控管
ViewState 状态管理
利用 BasePage 实作窗体权限控管
    
''' <summary>
利用 BasePage 实作窗体权限控管    
''' 覆写。引发 InitComplete 事件。
利用 BasePage 实作窗体权限控管    
''' </summary>

    Protected Overrides Sub OnInitComplete(ByVal e As System.EventArgs)
利用 BasePage 实作窗体权限控管        
If Not Me.IsPostBack Then
利用 BasePage 实作窗体权限控管            
'取得使用者的窗体权限
利用 BasePage 实作窗体权限控管
            '测试用:设定使用者具「执行/新增/修改」权限,实际应呼叫中间层取得使用者的此窗体权限
利用 BasePage 实作窗体权限控管
            Me.UserActions = EFormActions.Execute Or EFormActions.Add Or EFormActions.Update
利用 BasePage 实作窗体权限控管
利用 BasePage 实作窗体权限控管            
'第一次加载页面时检查执行权限
利用 BasePage 实作窗体权限控管
            If Me.UserActions = EFormActions.None Then
利用 BasePage 实作窗体权限控管                
Throw New Exception("没有此窗体执行权限")
利用 BasePage 实作窗体权限控管            
End If
利用 BasePage 实作窗体权限控管        
End If
利用 BasePage 实作窗体权限控管
利用 BasePage 实作窗体权限控管        
MyBase.OnInitComplete(e)
利用 BasePage 实作窗体权限控管    
End Sub

利用 BasePage 实作窗体权限控管
    
''' <summary>
利用 BasePage 实作窗体权限控管    
''' 使用者的窗体操作权限。
利用 BasePage 实作窗体权限控管    
''' </summary>

    Public Property UserActions() As EFormActions
利用 BasePage 实作窗体权限控管        
Get
利用 BasePage 实作窗体权限控管            
Return FUserActions
利用 BasePage 实作窗体权限控管        
End Get
利用 BasePage 实作窗体权限控管        
Set(ByVal value As EFormActions)
利用 BasePage 实作窗体权限控管            FUserActions 
= value
利用 BasePage 实作窗体权限控管        
End Set
利用 BasePage 实作窗体权限控管    
End Property

利用 BasePage 实作窗体权限控管
    
''' <summary>
利用 BasePage 实作窗体权限控管    
''' 检查使用者是否具有指定的窗体操作权限。
利用 BasePage 实作窗体权限控管    
''' </summary>
利用 BasePage 实作窗体权限控管    
''' <param name="Actions">窗体操作权限</param>

    Public Function CheckUserActions(ByVal Actions As EFormActions) As Boolean
利用 BasePage 实作窗体权限控管        
If (Me.UserActions And Actions) = Actions Then
利用 BasePage 实作窗体权限控管            
Return True
利用 BasePage 实作窗体权限控管        
Else
利用 BasePage 实作窗体权限控管            
Return False
利用 BasePage 实作窗体权限控管        
End If
利用 BasePage 实作窗体权限控管    
End Function

利用 BasePage 实作窗体权限控管
利用 BasePage 实作窗体权限控管
End Class


测试程序
为测试使用,在上述的 TBActionPage 的 OnInitComplete 方法,直接设定具有「执行/新增/修改」权限;正确的作法应该是呼叫中间层传入该窗体的识别码来取得使用者在该窗体具有那些权限,并在此设定 UserActions 属性值。
新增一个测试页面,继承至 TBActionPage,当按下按钮时利用 CheckUserActions 使用者具那些权限并输出。
执行结果如下

利用 BasePage 实作窗体权限控管

利用 BasePage 实作窗体权限控管Me.UserActions = EFormActions.Execute Or EFormActions.Add Or EFormActions.Update

 

利用 BasePage 实作窗体权限控管Imports Bee.Web.WebCommon
利用 BasePage 实作窗体权限控管
Partial Class _Default
利用 BasePage 实作窗体权限控管    
Inherits Bee.Web.TBActionPage
利用 BasePage 实作窗体权限控管
    
Protected Sub Button1_Click(ByVal sender As ObjectByVal e As System.EventArgs) Handles Button1.Click
利用 BasePage 实作窗体权限控管        
Me.Response.Write("執行 -> " & IIf(Me.CheckUserActions(EFormActions.Execute), "Y""N"))
利用 BasePage 实作窗体权限控管        
Me.Response.Write("< br/ >")
利用 BasePage 实作窗体权限控管        
Me.Response.Write("新增 -> " & IIf(Me.CheckUserActions(EFormActions.Add), "Y""N"))
利用 BasePage 实作窗体权限控管        
Me.Response.Write("< br/ >")
利用 BasePage 实作窗体权限控管        
Me.Response.Write("修改 -> " & IIf(Me.CheckUserActions(EFormActions.Update), "Y""N"))
利用 BasePage 实作窗体权限控管        
Me.Response.Write("< br/ >")
利用 BasePage 实作窗体权限控管        
Me.Response.Write("刪除 -> " & IIf(Me.CheckUserActions(EFormActions.Delete), "Y""N"))
利用 BasePage 实作窗体权限控管    
End Sub

利用 BasePage 实作窗体权限控管
End Class

 


 

作者:jeff377 来源:博客园
 
 
 
昆明索仕科技开发有限公司 版权所有 Copyright© 2002-2010 Kunming Source Technology Exploitive Co.,LTD. All Rights Reserved.
电话:0871-5627877 业务QQ:163871 联系我们
本站基于:索仕网站信息管理系统建设 版本 2.0.4325