00001: Imports Microsoft.VisualBasic 00002: Imports System.Web.Security 00003: Imports System 00004: Imports System.Web 00005: Imports System.Web.Profile 00006: 00007: ''' <summary> 00008: ''' Это базовый класс сайта, добавляюющий к стандартному классу странички пару свойств 00009: ''' Иcпользуется на всех персональных страничках (при постбеках и нет) - требуется эта проверка корректности номера юзера (к кому заходим), заданного в Request.QueryString("i") 00010: ''' Просто определить тут WEB-контролы низзя - перестанут работать все диалоговые инструменты студии и привязки в SqlDataSource 00011: ''' </summary> 00012: ''' 00013: 00014: Public Enum RequestType 00015: AuUserToHimself = 1 'залогинившийся юзер зашел сам к себе 00016: AuUserToOtherActive = 2 'залогинившийся юзер зашел к другому c активированным логином 00017: AuUserToOtherInActive = 3 'залогинившийся юзер зашел к другому с НЕактивированным логином 00018: AnonUserToActive = 4 'анонимный юзер зашел к другому с активированным логином 00019: AnonUserToInActive = 5 'анонимный юзер зашел к другому с НЕактивированным логином 00020: End Enum 00021: 00022: Public Class VotpuskBasePage 00023: Inherits System.Web.UI.Page 00024: ''' <summary> 00025: ''' Это ссылка на шифровалку параметров 00026: ''' </summary> 00027: Public ReadOnly Property PP8() As VBNET2000.ParmProtector8 00028: Get 00029: Return CType(Application("ParmProtector8"), VBNET2000.ParmProtector8) 00030: End Get 00031: End Property 00032: 00033: Dim _TypeOfPageLoad As RequestType 00034: ''' <summary> 00035: ''' Это тип загрузки странички этого сайта 00036: ''' </summary> 00037: Public ReadOnly Property QueryString_TypeOfPageLoad() As RequestType 00038: Get 00039: Return _TypeOfPageLoad 00040: End Get 00041: End Property 00042: 00043: Dim _ToUser As MembershipUser 00044: ''' <summary> 00045: ''' К какому юзеру входим по QueryString (рассчитывается функцией CheckRequest) 00046: ''' </summary> 00047: Public ReadOnly Property QueryString_User() As MembershipUser 00048: Get 00049: Return _ToUser 00050: End Get 00051: End Property 00052: 00053: Dim _ToUserProfile As ProfileCommon 00054: ''' <summary> 00055: ''' Это профиль юзера к которому заходим по Querystring 00056: ''' </summary> 00057: Public ReadOnly Property QueryString_UserProfile() As ProfileCommon 00058: Get 00059: Return _ToUserProfile 00060: End Get 00061: End Property 00062: 00063: Dim _QueryString_UserName As String 00064: ''' <summary> 00065: ''' Имя юзера к кому зашли по QueryString 00066: ''' </summary> 00067: Public ReadOnly Property QueryString_UserName() As String 00068: Get 00069: Return _QueryString_UserName 00070: End Get 00071: End Property 00072: 00073: Dim _QueryString_g As String 00074: ''' <summary> 00075: ''' QueryString("g") в расшифрованном виде 00076: ''' </summary> 00077: Public ReadOnly Property QueryString_g() As String 00078: Get 00079: Return _QueryString_g 00080: End Get 00081: End Property 00082: 00083: Dim _QueryString_t As String 00084: ''' <summary> 00085: ''' QueryString("t") в расшифрованном виде 00086: ''' </summary> 00087: Public ReadOnly Property QueryString_t() As String 00088: Get 00089: Return _QueryString_t 00090: End Get 00091: End Property 00092: 00093: Dim _QueryString_j As String 00094: ''' <summary> 00095: ''' QueryString("j") в расшифрованном виде 00096: ''' </summary> 00097: Public ReadOnly Property QueryString_j() As String 00098: Get 00099: Return _QueryString_j 00100: End Get 00101: End Property 00102: 00103: 00104: Private Sub VotpuskBasePage_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 00105: 'сначала заполнили базовые свойства странички _ToUser,TypeOfPageLoad 00106: Session("CheckRequest") = CheckRequest(IsPostBack) 00107: _TypeOfPageLoad = CType(Session("CheckRequest"), RequestType) 00108: If _ToUser IsNot Nothing Then _QueryString_UserName = _ToUser.UserName 00109: 'теперь, если в Querystring заданы g, t, j - впишем их в hidentype-контролы странички в расшифрованном виде 00110: If Request.QueryString("g") <> "" Then _QueryString_g = VBNET2000.PP8_Helper.Unmask_QueryString("g", "SQLServer_ConnectionStrings") 'номер в табле GroupName 00111: If Request.QueryString("t") <> "" Then _QueryString_t = VBNET2000.PP8_Helper.Unmask_QueryString("t", "SQLServer_ConnectionStrings") 'номер в табле LoadType 00112: If Request.QueryString("j") <> "" Then _QueryString_j = VBNET2000.PP8_Helper.Unmask_QueryString("j", "SQLServer_ConnectionStrings") 'номер в табле UserData 00113: End Sub 00114: 00115: ''' <summary> 00116: ''' Проверка типа входа - к себе/не к себе. 00117: ''' Отрезает совсем левые входы с подделанным или пустым номером юзера 00118: ''' </summary> 00119: Private Function CheckRequest(ByVal IsPostback As Boolean) As RequestType 00120: If HttpContext.Current.Request.QueryString("i") = "" Then 00121: If HttpContext.Current.User.Identity.IsAuthenticated Then 00122: 'аутентифицированного юзера перенаправляем к себе же на страничку 00123: My.Log.WriteEntry("1. Error. Не задан QueryString('i'). Аутентифицированного юзера перенаправляем к себе же на страничку. IsPostback=" & IsPostback.ToString) 00124: HttpContext.Current.Response.Redirect([GoTo].UserHomePage) 00125: Else 00126: 'левый вход непонятно кого и непонятно к кому 00127: My.Log.WriteEntry("2. Error. Не задан QueryString('i'). Левый вход неаутентифицированного непонятно к кому. Направляем на NotSupported. IsPostback=" & IsPostback.ToString) 00128: HttpContext.Current.Response.Redirect([GoTo].NotSupported & "?ErrorMessage=""Не задан QueryString('i'). Левый вход неаутентифицированного непонятно к кому""&URL=""" & Request.RawUrl & """") 00129: End If 00130: Else 00131: 'вход к конкретно заданному юзеру 00132: Try 00133: Dim ToGuid As New Guid(HttpContext.Current.Request.QueryString("i")) 00134: If Membership.GetUser(ToGuid) Is Nothing Then 00135: If HttpContext.Current.User.Identity.IsAuthenticated Then 00136: 'аутентифицированного юзера перенаправляем к себе же на страничку 00137: My.Log.WriteEntry("3. Error. Не найден юзер по заданному GUID. Аутентифицированного юзера перенаправляем к себе же на страничку. IsPostback=" & IsPostback.ToString) 00138: HttpContext.Current.Response.Redirect([GoTo].UserHomePage) 00139: Else 00140: 'левый вход непонятно кого и непонятно к кому 00141: My.Log.WriteEntry("4. Error. Не получилось сделать GUID по заданному QueryString('i'). " & HttpContext.Current.Request.QueryString("i") & " Левый вход неаутентифицированного непонятно к кому. Направляем на NotSupported. IsPostback=" & IsPostback.ToString) 00142: HttpContext.Current.Response.Redirect([GoTo].NotSupported & "?ErrorMessage=""Не получилось сделать GUID по заданному QueryString('i')""&URL=""" & Request.RawUrl & """") 00143: End If 00144: Else 00145: 'запрошенный юзер СУЩЕСТВУЕТ - идем дальше 00146: _ToUser = Membership.GetUser(ToGuid) 00147: End If 00148: Catch ex As Exception 00149: If HttpContext.Current.User.Identity.IsAuthenticated Then 00150: 'аутентифицированного юзера перенаправляем к себе же на страничку 00151: My.Log.WriteEntry("5. Error. Не получилось сделать GUID по заданному QueryString('i') =" & HttpContext.Current.Request.QueryString("i") & " Аутентифицированного юзера перенаправляем к себе же на страничку. IsPostback=" & IsPostback.ToString) 00152: HttpContext.Current.Response.Redirect([GoTo].UserHomePage) 00153: Else 00154: 'левый вход непонятно кого и непонятно к кому 00155: My.Log.WriteEntry("6. Error. Не получилось сделать GUID по заданному QueryString('i'). " & HttpContext.Current.Request.QueryString("i") & " Левый вход неаутентифицированного непонятно к кому. Направляем на NotSupported. IsPostback=" & IsPostback.ToString) 00156: HttpContext.Current.Response.Redirect([GoTo].NotSupported & "?ErrorMessage=""Не получилось сделать GUID по заданному QueryString('i')""&URL=""" & Request.RawUrl & """") 00157: End If 00158: End Try 00159: If _ToUser Is Nothing Then 00160: My.Log.WriteEntry("7. Error. Так и не получили имени юзера по QueryString('i') =" & HttpContext.Current.Request.QueryString("i") & " Аутентифицированного юзера перенаправляем к себе же на страничку. IsPostback=" & IsPostback.ToString) 00161: 'аутентифицированного юзера перенаправляем к себе же на страничку 00162: HttpContext.Current.Response.Redirect([GoTo].UserHomePage) 00163: End If 00164: Try 00165: _ToUserProfile = ProfileBase.Create(_ToUser.UserName) 00166: Catch ex As Exception 00167: My.Log.WriteEntry("8. Error. Не прочитался профиль юзера " & HttpContext.Current.Request.QueryString("i")) 00168: End Try 00169: If HttpContext.Current.User.Identity.IsAuthenticated Then 00170: If HttpContext.Current.Request.QueryString("i") = Membership.GetUser(HttpContext.Current.User.Identity.Name).ProviderUserKey.ToString Then 00171: My.Log.WriteEntry("AuUserToHimself. Аутентифицированный юзер '" & HttpContext.Current.User.Identity.Name & "' зашел к себе. IsPostback=" & IsPostback.ToString) 00172: Return RequestType.AuUserToHimself 00173: Else 00174: If _ToUserProfile.LoginIsActivate Then 00175: My.Log.WriteEntry("AuUserToOtherActive. Аутентифицированный юзер '" & HttpContext.Current.User.Identity.Name & "' зашел на страничку другого юзера " & HttpContext.Current.Request.QueryString("i") & " c активированным логином. IsPostback=" & IsPostback.ToString) 00176: Return RequestType.AuUserToOtherActive 00177: Else 00178: My.Log.WriteEntry("AuUserToOtherInActive. Аутентифицированный юзер '" & HttpContext.Current.User.Identity.Name & "' зашел на страничку другого юзера " & HttpContext.Current.Request.QueryString("i") & " c Неактивированным логином. IsPostback=" & IsPostback.ToString) 00179: Return RequestType.AuUserToOtherInActive 00180: End If 00181: End If 00182: Else 00183: If _ToUserProfile.LoginIsActivate Then 00184: My.Log.WriteEntry("AnonUserToActive. Неаутифицированный юзер зашел посмотреть страничку конкретного юзера " & HttpContext.Current.Request.QueryString("i") & " c активированным логином. IsPostback=" & IsPostback.ToString) 00185: Return RequestType.AnonUserToActive 00186: Else 00187: My.Log.WriteEntry("AnonUserToInActive. Неаутифицированный юзер зашел посмотреть страничку конкретного юзера " & HttpContext.Current.Request.QueryString("i") & " c Неактивированным логином. IsPostback=" & IsPostback.ToString) 00188: Return RequestType.AnonUserToInActive 00189: End If 00190: End If 00191: End If 00192: End Function 00193: End Class
Comments (
)
Link to this page:
//www.vb-net.com/asp2/35/11.htm
|