2011-09-16 6 views
0

나는 Http 요청 당 한번 실행하고 싶지만 Context.Current.User와 같은 것들이 할당 된 후에 메소드를 가지고있다.요청 코드 당

public static void AddPrincipal(HttpContext context) 
    { 
     var users = DependencyResolver.Current.GetService<IRepository<User>>(); 
     var currentUser = users.Retrieve(u => u.Username == context.User.Identity.Name); 
     var principal = new Principal(currentUser); 
     context.Items.Add("Principal", principal); 
    } 

ASP.Net MVC3에서이를 달성하는 가장 좋은 방법은 무엇입니까?

컨트롤러 팩토리에 넣으려고했지만 내 페이지에 부분적인 동작이 있으므로 더 많이 한 번 실행됩니다.

은 또한 사전에 ..

감사의 Global.asax에 BeginRequest을 시도했지만 HttpContext.Current.User 시간의 그 시점에서 널 (null)입니다!

답변

0

우선은 당신이 무엇을하고 있는지에 따라, 사용자 정의 HttpModule 사용자 정의 MembershipProvider를 구축처럼 또는 적어도 뭔가를 더 볼 수도 말할 것이다,하지만 귀하의 질문에 대답 :

당신은 시도 할 수 있습니다를 HttpRequest에 인증이 끝난 후 상승 할 예상되는 Application_AuthenticateRequest 이벤트에 가입

(채워진 된 HttpContext.Current.User 후해야하는하는) 당신의 Global.asax에

protected void Application_AuthenticateRequest(object sender, EventArgs e) 
{ 
    AddPrinciple(HttpContext.Current); 
} 
,536을이 같은 작업을 수행
+0

빠른 응답을 보내 주셔서 감사합니다! 방금 시도했지만, 이상한 이유로 HttpContext.Current.User는 여전히 Application_AuthenticateRequest ..에서 null입니다. ( – OopsImAlive

+0

) ASP.NET 인증/멤버쉽을 설치 했습니까? 또한 인증을 통해이 작업을 수행하려고하는 HttpRequest입니까? – ericb

관련 문제