Фильтры ресурсов | OTUS
Запланируйте обучение с выгодой в Otus!
-15% на все курсы до 22.11 Забрать скидку! →
Выбрать курс

Фильтры ресурсов

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

Чтобы создать фильтр ресурсов потребуется реализовать один из двух интерфейсов на выбор:

  • IResourceFilter,
  • IAsyncResourceFilter.

Пример работы

Давайте представим, что нам требуется ограничить доступ к веб-сайту для старых браузеров типа проблемного IE. Для решения поставленных задач пригодится простой фильтр ресурсов.

Итак, добавим в наш проект следующий класс фильтра:

1-20219-99913a.png

Обратите внимание, что интерфейс IResourceFilter предоставляет 2 метода:

  1. OnResourceExecuting(). Этот метод срабатывает после фильтров авторизации, однако до выполнения метода и до работы фильтров действий/результатов/исключений.
  2. OnResourceExecuted(). Тут срабатывание происходит после выполнения метода и фильтров действий/результатов/исключений.

В качестве параметра в оба этих метода передается параметр типа ResourceExecutedContext -- он позволяет как получать данные запроса, так и управлять ответом.

В нашем случае мы проверяем заголовок "User-Agent". Если этот заголовок содержит подстроки, соответствующие браузеру Internet Explorer, то посредством свойства Result будет переустановлен ответ. Обработка запроса на этом завершится, а метод и последующие фильтры не выполнятся.

А вот как можно реализовать эту задачу в асинхронной версии:

2-20219-943123.png

Асинхронная версия определяет лишь один метод, принимающий еще и параметр ResourceExecutingContext. Причем 2-й параметр здесь -- это объект ResourceExecutionDelegate , предоставляющий делегат, вызов которого позволит передать обработку запроса дальше -- это могут быть следующие в конвейере фильтры либо непосредственно контроллер, либо страница Razor Page.

По материалам https://metanit.com/sharp/aspnet5/.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто
Черная пятница в Otus! ⚡️
Скидка 15% на все курсы до 22.11 →