Asp.net mvc 3 每请求代码
我有一个方法,我想在分配了Context.Current.User之类的内容之后,每个Http请求运行一次Asp.net mvc 3 每请求代码,asp.net-mvc-3,httpcontext,Asp.net Mvc 3,Httpcontext,我有一个方法,我想在分配了Context.Current.User之类的内容之后,每个Http请求运行一次 public static void AddPrincipal(HttpContext context) { var users = DependencyResolver.Current.GetService<IRepository<User>>(); var currentUser = users.Retrieve(
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.NETMVC3中实现这一点的最佳方法是什么
我试图把它放在控制器工厂,但我的页面上有一些局部操作,所以它运行了多次
我还在Global.asax中尝试了BeginRequest,但HttpContext.Current.User此时为空
提前谢谢 首先,我要说的是,基于您正在做的工作,您可能希望更多地了解构建自定义或至少是自定义,但要回答您的问题: 您可以尝试订阅应用程序_AuthenticateRequest事件,该事件应该在HttpRequest完成身份验证后引发,该事件应该在HttpContext.Current.User被填充后引发 在Global.asax中执行类似操作
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
AddPrinciple(HttpContext.Current);
}
感谢您的快速响应!刚刚尝试过,但由于某些奇怪的原因,HttpContext.Current.User在应用程序_AuthenticateRequest中仍然为null..:您是否设置了ASP.NET身份验证/成员资格?另外,您尝试使用的HttpRequest是否经过身份验证?