ASP.NET MVC 1.0을 사용하는 응용 프로그램에서 작업 중이며 사용자 지정 IPrincipal 개체를 HttpContext.Current.User 개체에 삽입하려고합니다.ASP.NET MVC 사용자 지정 IPrincipal 삽입
기존 WebForms 응용 프로그램에서는 다음과 같이 Application_AuthenticateRequest 이벤트를 사용했습니다.
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
if (HttpContext.Current.User != null)
{
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
if (HttpContext.Current.User.Identity is FormsIdentity)
{
// Get Forms Identity From Current User
FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity;
// Get Forms Ticket From Identity object
FormsAuthenticationTicket ticket = id.Ticket;
// Create a new Generic Principal Instance and assign to Current User
SiteUser siteUser = new SiteUser(Convert.ToInt32(id.Name));
HttpContext.Current.User = siteUser;
}
}
}
}
이렇게 사용하여 사용자 개체를 명시 적으로 캐스팅하여 SiteUser를 입력하여 사용자 지정 IPrincipal에 액세스 할 수있었습니다. 나는 실제로 모든 페이지가 상속받은 커스텀 클래스를 가짐으로써 이것을 수행했다.
아무리해도 내 문제는 ASP.NET MVC에서 응용 프로그램을 죽게하는 요청 (JS 파일, 이미지 등)이 발생할 때마다 Application_AuthenticateRequest가 실행되는 것 같습니다.
ASP.NET MVC 1.0 내에서 HttpContext.Current.User 객체에 사용자 지정 IPrincipal을 주입하는 방법에 대한 도움이나 제안 사항은 크게 감사하겠습니다. 나는 다음과 같은 소식을 보았지만, 달성하고자하는 것을 만족시키지 못했습니다. ASP.NET MVC - Set custom IIdentity or IPrincipal
TIA.
파일 유형에 관계없이 죽지 않아야합니다. 어떤 오류가 표시됩니까? – blowdart
요청 된 모든 리소스에 대해 Application_AuthenticateRequest 메서드에서 "히트"를 얻습니다. Application_AuthenticateRequest 메서드를 사용하지 않고 실행하는 것에 비해 페이지가 고통스럽게 느리게 렌더링됩니다. SiteUser 객체의 생성자는 특히 탁월한 작업을 수행하지 않고 DB에서 사용자 세부 정보 및 역할 목록을 가져옵니다. –
물론 IIS7이 작동하는 방식입니다. 나는 당신이 에러로 죽어가는 것을 의미한다고 생각했습니다. – blowdart