Thread.CurrentPrincipal Set em Application_AuthenticationRequest não está definido mais tarde no aplicativo

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

  •  03-07-2019
  •  | 
  •  

Pergunta

No arquivo global.asax para o Application_authenticationRequest, estou configurando o thread.currentPrincipal para um diretor personalizado. Eu também configurei o httpcontext.current.user para o mesmo principal.

No entanto, mais tarde no aplicativo, quando eu preciso lançar o thread.CurrentPrincipal para o nosso tipo personalizado, recebo um erro de tempo de execução dizendo: Incapaz de lançar o objeto do tipo 'System.Web.Security.RolePrincipal' para digitar 'OurCustomPrincipal'.

Como o Thread.CurrentPrincipal foi reiniciado para RolePrincipal e, mais até o ponto, como faço para mantê -lo no CustomPrincipal que definimos no Global.asax

desde já, obrigado

Foi útil?

Solução

Você certamente já resolveu seu problema agora, mas, por caso, se estiver usando o RoleProvider do ASP.NET, o Rolemanagermodule substitui o objeto genérico criativo criado pelo FormSauthenticationModule e o substitui por um objeto de representação durante o PostAthenticaterequest:http://www.asp.net/learn/security/tutorial-11-vb.aspx

Outras dicas

Para resumir, uma correção rápida é executar suas substituições principais e de identidade no manipulador Application_onPostauthenticaterequest.

Verifique se você implementou uma classe para interface IIDentity e iPrincipal e, em seguida, está usando algo como o código a seguir para atribuir o 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top