2015-09-12 6 views
1

Примеры для ограничения доступа к ресурсам мини-профилировщика происходят в методе Application_Start, который запутывает, так как во всем мире будет on/offprofiler для всех на основе доступа 1-го лица для доступа к сайту.Как ограничить доступ к/mini-profiler-resources/results-index за запрос

Позже в примерах показано, как отказаться от profiler информации, основанной на каждом запросе, который разрешает ее глобально, а затем отказывает в запросе, но это не работает на странице /results-index.

Есть ли способ разрешить доступ только к странице /results-index за запрос или оставить это info/page аналогичным образом?

+0

Не понял, что он просто назначил делегата для звонка позже, я использовал анонимного делегата для тестирования, с которым не должно было быть никакого значения, но я считаю, что у меня это получилось сейчас – user3953989

ответ

0

Как это сделать:
Имейте все контроллеры, наследуемые от общего класса BaseController.
В BaseController, переопределения Initialize:

protected override void Initialize(RequestContext requestContext) 
{ 
    if (requestContext.HttpContext.User == null || !requestContext.HttpContext.User.IsInRole(KnownRoles.Developer.ToString())) 
    { 
     MiniProfiler.Stop(discardResults: true); 
    } 
    base.Initialize(requestContext); 
} 

Edit: Вы можете ограничить доступ к странице истории miniprofiler в вашем web.config:

<location path="mini-profiler-resources"> 
    <system.web> 
     <authorization> 
     <allow roles="Developer"/> 
     <deny users="*" /> 
     </authorization> 
    </system.web> 
    </location> 

Это позволит только пользователям с ролью "Разработчик" для доступа к этой странице.

+0

Это приведет к отказу от виджета отображается на странице, но не влияет на страницу «последние 100 профилей»/результат-индекс – user3953989

+0

Отредактировал мой ответ с помощью решения для индексной страницы. Это должно работать, если вы хотите ограничить доступ на основе ролей или отдельных пользователей. –

+0

Спасибо за обновление. Когда я протестировал это, я использовал анонимного делегата без параметров, которые, по моему мнению, заставили его запускать только один раз в app_onstart. Когда я переключился на делегат, соответствующий сигнатуре на странице примеров, он работал, как ожидалось. – user3953989

 Смежные вопросы

  • Нет связанных вопросов^_^