Thread.CurrentPrincipal défini dans Application_AuthenticationRequest n'est pas défini ultérieurement dans l'application

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

  •  03-07-2019
  •  | 
  •  

Question

Dans le fichier global.asax pour Application_AuthenticationRequest, je règle Thread.CurrentPrincipal sur un principal personnalisé. J'ai également défini HttpContext.Current.User sur le même principe.

Cependant, plus tard dans l'application lorsque je dois convertir le Thread.CurrentPrincipal à notre type personnalisé, je reçois une erreur d'exécution qui dit: Impossible de convertir l'objet de type 'System.Web.Security.RolePrincipal' en 'OurCustomPrincipal'.

Comment Thread.CurrentPrincipal a-t-il été réinitialisé sur RolePrincipal et plus précisément sur le point comment le conserver sur le CustomPrincipal défini dans le fichier global.asax

Merci d'avance

Était-ce utile?

La solution

Vous avez sûrement résolu votre problème maintenant, mais juste au cas où, si vous utilisez RoleProvider d'ASP.NET, RoleManagerModule remplace l'objet GenericPrincipal créé par FormsAuthenticationModule et le remplace par un objet RolePrincipal créé par PostAuthenticateRequest: http://www.asp.net/Learn/Security/tutorial-11 -vb.aspx

Autres conseils

En résumé, une solution rapide consiste à remplacer le principal et l'identité par le gestionnaire Application_OnPostAuthenticateRequest.

Vérifiez que vous avez implémenté une classe pour IIDentity & amp; L’interface Iprincipal, puis vous utilisez quelque chose comme le code suivant pour attribuer le currentprincipal.

    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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top