3 Stimmen

Erweitern Sie System.Web.HttpContext.User

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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X