Ich möchte das System.Web.HttpContext.User-Objekt (ASP.NET/VB.NET) erweitern, so dass es andere Felder als nur Name enthält. Ich verstehe, dass ich ein Objekt erstellen kann, das die Klasse System.Security.Principal.GenericPrincipal erbt, aber wie speichere ich das im Current.User-Objekt auf eine brauchbare Weise. Current.User.UserID
.
Bisher, um dies zu erreichen, habe ich eine kludgy Problemumgehung erstellt, indem Sie | getrennte Zeichenfolgen in der User.Name-Eigenschaft und dann teilen Sie, aber es ist immer Art von lächerlich.
Irgendwelche Vorschläge?
Gracias.
EDIT : Ich habe Folgendes versucht, ohne Erfolg:
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
Einstellen des Objekts in meiner Global.asax Application_AuthenticateRequest
Funktion wie folgt:
HttpContext.Current.User = New CurrentUser(User, userRoles, _
points, sentenceCount, probationUntil)
mit einem direkten Wurf, wo immer das Objekt benötigt wird, wie folgt:
Dim thisUser As CurrentUser = DirectCast(Current.User, CurrentUser)
Ich habe auch CType ausprobiert und es hat nicht funktioniert... mein Fehler ist
[InvalidCastException: Das Objekt vom Typ 'System.Security.Principal.GenericPrincipal' konnte nicht in den Typ 'myProject.CurrentUser' umgewandelt werden].
Ich verliere hier den Verstand ... :( Danke Leute...
irgendjemand?