Thread.CurrentPrincipal in Application_AuthenticationRequest eingestellt später in der App nicht gesetzt

StackOverflow https://stackoverflow.com/questions/809727

  •  03-07-2019
  •  | 
  •  

Frage

In der global.asax-Datei für die Application_AuthenticationRequest ich die Thread.CurrentPrincipal auf eine benutzerdefinierte Haupteinstellung. Ich habe auch die HttpContext.Current.User auf das gleiche Prinzip.

Jedoch später in der App, wenn ich die Thread.CurrentPrincipal unserer Gewohnheit Typ umwandeln müssen, bekomme ich einen Laufzeitfehler zu sagen: Kann nicht das Objekt des Typs ‚System.Web.Security.RolePrincipal‘ werfen geben ‚OurCustomPrincipal‘.

Wie kommen die Thread.CurrentPrincipal zu Roleprincipal zurückgesetzt und mehr auf den Punkt, wie kann ich es halte an der Custom wir in der global.asax gesetzt

Vielen Dank im Voraus

War es hilfreich?

Lösung

Sie sicherlich ihr Problem mittlerweile gelöst, sondern nur für den Fall, wenn Sie die Roleprovider von ASP.NET verwenden, überschreibt der Rolemanagermodule das Generic Objekt durch die FormsAuthenticationModule erstellt und ersetzt es durch ein Roleprincipal Objekt während der PostAuthenticateRequest: http://www.asp.net/Learn/Security/tutorial-11 -vb.aspx

Andere Tipps

Um es zusammenzufassen, eine schnelle Lösung ist Ihr Kapital und Identität Ersatz auf der Application_OnPostAuthenticateRequest Handler statt auszuführen.

Bitte überprüfen Sie, ob Sie eine Klasse für IIdentity & IPrincipal Schnittstelle implementiert haben und dann so etwas wie den folgenden Code Sie die Current zuweisen verwenden.

    Dim userIdentity As CustomIdentity
    userIdentity = New CustomIdentity(username, True,"forms", sessionId)

    Dim principal As New CustomPrincipal(userIdentity, arrRoles)
    HttpContext.Current.User = principal
    System.Threading.Thread.CurrentPrincipal = principal
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top