application에서 struch.currentprincipal set at application_authenticationRequest는 앱에서 나중에 설정되지 않습니다.

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

  •  03-07-2019
  •  | 
  •  

문제

application_authenticationRequest의 global.asax 파일에서 스레드를 사용자 정의 교장으로 설정합니다. 또한 httpcontext.current.user를 동일한 교장으로 설정했습니다.

그러나 나중에 스레드를 캐스팅해야 할 때 앱에서 CurrentPrincipal이 사용자 정의 유형에 런타임 오류를받을 수 있습니다.

thread.currentprincipal은 어떻게 Roleprincipal에 재설정되었고, Global.asax에서 설정 한 Custom Principal에서 어떻게 유지합니까?

미리 감사드립니다

도움이 되었습니까?

해결책

당신은 확실히 당신의 문제를 해결했지만 지금까지 ASP.NET의 RoleProvider를 사용하는 경우 RoleManagerModule은 FormsAuthenticationModule에 의해 생성 된 일반적인 대상을 덮어 쓰고 다음과 같은 후에 RolePrincipal Object로 대체합니다.http://www.asp.net/learn/security/tutorial-11-vb.aspx

다른 팁

요약하면, 빠른 수정은 응용 프로그램 _onpostauthenticateRequest 핸들러에서 원금 및 신원 교체를 수행하는 것입니다.

iInidentity & iprincipal 인터페이스 용 클래스를 구현 한 다음 다음 코드와 같은 것을 사용하여 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top