По коду запроса - PullRequest
       3

По коду запроса

0 голосов
/ 17 сентября 2011

У меня есть метод, который я хочу запустить один раз для запроса 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?

Я пытался поместить его в фабрику контроллеров, но у меня есть некоторые действия с партиалами на моих страницах, поэтому он запускается более одного раза.

Я также пробовал BeginRequest в Global.asax, но HttpContext.Current.User на данный момент не имеет значения ..

Заранее спасибо!

1 Ответ

0 голосов
/ 17 сентября 2011

Сначала я скажу, что в зависимости от того, что вы делаете, вы, возможно, захотите посмотреть на что-то вроде создания пользовательского MembershipProvider или, по крайней мере, пользовательского HttpModule , ноответьте на свой вопрос:

Вы можете попробовать подписаться на событие Application_AuthenticateRequest, которое должно вызываться после завершения аутентификации HttpRequest (что должно быть после заполнения HttpContext.Current.User)

Сделайте что-нибудь подобное в вашем Global.asax

protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
    AddPrinciple(HttpContext.Current);
}
...