Я хотел бы расширить объект System.Web.HttpContext.User (ASP.NET/VB.NET), чтобы он содержал другие поля, кроме только Name. Я понимаю, что могу создать объект, который наследует класс System.Security.Principal.GenericPrincipal, но как мне сохранить его в объекте Current.User удобным для использования способом. то есть я могу сделать что-то вроде Current.User.UserID
.
Пока что для этого я создал хитрый обходной путь, используя | строки с разделителями в свойстве User.Name, а затем их разделение, но это становится немного смешно.
Есть предложения?
Спасибо!
РЕДАКТИРОВАТЬ : я пробовал следующее безрезультатно:
Imports System.Security.Principal
Public Class CurrentUser : Inherits GenericPrincipal
Private _totalpoints As Integer
Private _sentencecount As Integer
Private _probationuntil As DateTime
Public ReadOnly Property TotalPoints() As Integer
Get
Return _totalpoints
End Get
End Property
Public ReadOnly Property SentenceCount() As Integer
Get
Return _sentencecount
End Get
End Property
Public ReadOnly Property ProbationUntil() As DateTime
Get
Return _probationuntil
End Get
End Property
Public Sub New(ByVal principle As IIdentity, ByVal roles() As String, _
ByVal points As Integer, ByVal sentences As Integer, ByVal probationTil As DateTime)
MyBase.New(principle, roles)
_totalpoints = points
_sentencecount = sentences
_probationuntil = FixDBNull(probationTil)
End Sub
End Class
установка объекта в моей функции Global.asax Application_AuthenticateRequest
следующим образом:
HttpContext.Current.User = New CurrentUser(User, userRoles, _
points, sentenceCount, probationUntil)
с прямым приведением, где нужен объект, например:
Dim thisUser As CurrentUser = DirectCast(Current.User, CurrentUser)
я также попробовал CType, и он не работал ... моя ошибка
[InvalidCastException: невозможно привести объект типа 'System.Security.Principal.GenericPrincipal' к типу 'myProject.CurrentUser'.]
Я схожу с ума здесь ... :( спасибо, ребята ...
любой