所有的页面都继承于一个基页面,这个基类中的load事件用于判断权限:
Protected pageAccess As String
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If (pageAccess Is Nothing) Then
Throw New ApplicationException("该页面没有设置访问权限,请与管理员联系!")
ElseIf (pageAccess = "User") Then
If (Session("UserPower") = "Guest") Then
'处理登录
Response.Redirect("/User/User_Login.aspx?type=1")
End If
ElseIf (pageAccess = "PowerUser") Then
If (Session("UserPower") = "Guest" OrElse Session("UserPower") = "User") Then
Response.Write("需要管理员,权限不够!")
Response.End()
End If
ElseIf (pageAccess = "Admin") Then
If (Not isAdmin()) Then
Response.Write("需要超级管理员,权限不够!")
Response.End()
End If
ElseIf (pageAccess <> "Guest") Then
Throw New ApplicationException("该页面访问权限设置错误,请与管理员联系!")
End If
End Sub
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If (pageAccess Is Nothing) Then
Throw New ApplicationException("该页面没有设置访问权限,请与管理员联系!")
ElseIf (pageAccess = "User") Then
If (Session("UserPower") = "Guest") Then
'处理登录
Response.Redirect("/User/User_Login.aspx?type=1")
End If
ElseIf (pageAccess = "PowerUser") Then
If (Session("UserPower") = "Guest" OrElse Session("UserPower") = "User") Then
Response.Write("需要管理员,权限不够!")
Response.End()
End If
ElseIf (pageAccess = "Admin") Then
If (Not isAdmin()) Then
Response.Write("需要超级管理员,权限不够!")
Response.End()
End If
ElseIf (pageAccess <> "Guest") Then
Throw New ApplicationException("该页面访问权限设置错误,请与管理员联系!")
End If
End Sub
所有继承的页面new函数中写:
Public Sub New()
pageAccess = "Guest"
End Sub
pageAccess = "Guest"
End Sub
此处写上guest,则该页面所有人都能访问,若写上基类页面中处理的其它字符串,则可以控制页面访问权限了。这个方法使用起来比较简单,新建页面只有两个地方需要修改,一个是继承的父类,一个是new当中加入给pageAccess赋值的语句。