2013-04-09 1 views
2

В ASP.NET MVC на Хансельман пример скотта показывает, как показать мини-профайлер для местного environmnetпозволяют мини-профайлер только для определенных пользователей и ролей

protected void Application_BeginRequest() 
     { 
      if (Request.IsLocal) { MiniProfiler.Start(); } //or any number of other checks, up to you 
     } 

Но, я хотел бы пойти на шаг дальше и иметь возможность видеть его удаленно, только для определенных зарегистрированных пользователей или ips.

Любая идея как?

Обновление: Я использовал следующий код:

protected void Application_EndRequest() 
     { 
      MiniProfiler.Stop(); //stop as early as you can, even earlier with MvcMiniProfiler.MiniProfiler.Stop(discardResults: true); 
     } 

     protected void Application_PostAuthorizeRequest(object sender, EventArgs e) 
     { 
      if (!IsAuthorizedUserForMiniProfiler(this.Context)) 
      { 
       MiniProfiler.Stop(discardResults: true); 
      } 
     } 

     private bool IsAuthorizedUserForMiniProfiler(HttpContext context) 
     { 
      if (context.User.Identity.Name.Equals("levalencia")) 
       return true; 
      else 
       return context.User.IsInRole("Admin"); 
     } 

ответ

6

Вы можете подписаться на PostAuthorizeRequest события и отбросить результаты, если текущий пользователь не в данной роли или запрос исходит от конкретного IP или что вы хотите:

protected void Application_BeginRequest() 
{ 
    MiniProfiler.Start(); 
} 

protected void Application_PostAuthorizeRequest(object sender, EventArgs e) 
{ 
    if (!DoTheCheckHere(this.Context)) 
    { 
     MiniProfiler.Stop(discardResults: true); 
    } 
} 

private bool DoTheCheckHere(HttpContext context) 
{ 
    // do your checks here 
    return context.User.IsInRole("Admin"); 
} 
+0

Как я могу получить текущего пользователя от global.asax? –

+0

Пользователь не является классом внутри запроса? Мне не хватает ссылки на сборку или использование, я полагаю? –

+0

Я вижу это: context.Request.LogonUserIdentity.User., Может быть, это работает для пользователя, но метод IsInRole не существует, когда я пытаюсь использовать это. –