Thread.CurrentPrincipal impostato in Application_AuthenticationRequest non è impostato successivamente nell'app

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

  •  03-07-2019
  •  | 
  •  

Domanda

Nel file global.asax per Application_AuthenticationRequest sto impostando Thread.CurrentPrincipal su un'entità personalizzata. Ho anche impostato HttpContext.Current.User sullo stesso principal.

Tuttavia, più avanti nell'app, quando ho bisogno di trasmettere Thread.CurrentPrincipal al nostro tipo personalizzato, ricevo un errore di runtime che dice: Impossibile eseguire il cast dell'oggetto di tipo "System.Web.Security.RolePrincipal" per digitare "OurCustomPrincipal".

Come è stato reimpostato Thread.CurrentPrincipal su RolePrincipal e altro ancora al punto in che modo posso mantenerlo su CustomPrincipal impostato in global.asax

Grazie in anticipo

È stato utile?

Soluzione

Ormai hai sicuramente risolto il tuo problema, ma nel caso in cui, se stai utilizzando RoleProvider da ASP.NET, RoleManagerModule sovrascrive l'oggetto GenericPrincipal creato da FormsAuthenticationModule e lo sostituisce con un oggetto RolePrincipal durante PostAuthenticateRequest: http://www.asp.net/Learn/Security/tutorial-11 -vb.aspx

Altri suggerimenti

Per riassumere, una soluzione rapida consiste nell'eseguire invece le sostituzioni di identità e principal sul gestore Application_OnPostAuthenticateRequest.

Verifica di aver implementato una classe per IIDentity & amp; Interfaccia Iprincipal e quindi stai usando qualcosa come il seguente codice per assegnare il principio corrente.

    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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top