2011-09-16 16 views
0

私は、Http要求ごとに1回実行したいが、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

まず、私はあなたが何をしているかに基づいて、カスタムMembershipProviderまたは少なくともカスタムHttpModuleを構築するようなもので、より多くのを見たいと思うかもしれませんが、あなたの質問に答えるためにと言うだろう:

あなたは試してみてください

のHttpRequestが( HttpContext.Current.Userが取り込まれた後であるべきである)に認証されて終了した後に発生することが想定され Application_AuthenticateRequestイベント、に加入すると、あなたのGlobal.asaxに

protected void Application_AuthenticateRequest(object sender, EventArgs e) 
{ 
    AddPrinciple(HttpContext.Current); 
} 
をこのような何かを
+0

迅速な対応に感謝します!ちょうどそれを試みましたが、いくつかの奇妙な理由でHttpContext.Current.UserはまだApplication_AuthenticateRequest ..でnullです..( – OopsImAlive

+0

あなたはASP.NET認証/メンバーシップをセットアップしましたか?また、認証でこれをしようとしているHttpRequestですか? – ericb

関連する問題