Фильтры

Фильтры. Введение

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core

Последнее обновление: 31.10.2015

Иногда возникает необходимость внести в приложение некоторую логику, которая должна отрабатывать до вызова действий контроллера. В частности, например, пользователь вызывает определенное действие некоторого контроллера, и нам необходимо проверять, авторизовался ли данный пользователь, и потом уже выполнять определенные действия. Для этого и применяются фильтры.

Фильтры реализованы как атрибуты, благодаря чему позволяют уменьшить объем кода в контроллере. Данные атрибуты могут применяться как ко всему классу, так и к отдельным его методам, свойствам и полям. В качестве примера вы можете создать новый проект приложения по шаблону Internet Application - в этом случае в папке Contollers у вас по умолчанию будет создан контроллер AccountController:

   [Authorize]
    public class AccountController : Controller
    {
			................................
    }

В данном случае атрибут [Authorize] как раз и будет представлять фильтр авторизации. Если бы мы не применили данный фильтр, то нам бы пришлось вручную писать логику проверки, авторизован ли пользователь или нет.

Применение фильтров

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

Но, как уже выше говорилось, мы можем применить фильтр на уровне отдельного метода:

public class HomeController : Controller
{   
    [Authorize]
    public ActionResult Index()
    {
        ViewBag.Message = "Modify this template to kick-start your ASP.NET MVC application.";

        return View();
    }
}

Базовые типы фильтров

В MVC реализовано четыре типа фильтров:

Тип фильтров

Реализуемый интерфейс

Стандартная реализация

Описание

Фильтры авторизации

IAuthorizationFilter

AuthorizationAttribute

Фильтр, определяющий, аутентифицирован ли клиент и имеет ли он доступ к данному ресурсу. Данный фильтр запускается до выполнения любого другого фильтра или метода действий

Фильтры действий

IActionFilter

ActionFilterAttribute

Фильтр, применяемый к действиям. Может запускаеться как до, так и после выполнения метода действий

Фильтры результатов действий

IResultFilter

ResultFilterAttribute

Фильтр, применяемый к результатам действий. Может запускаться как до, так и после выполнения результата действия

Фильтры исключений

IExceptionFilter

HandleErrorAttribute

Атрибут для обработки исключений, выбрасываемых методом действий и результатом действий

При вызове метода действий фреймворк MVC сначала смотрит, применяются ли к данному действию какие-либо атрибуты, и если применяются, то в начале отрабатывают данные атрибуты.

Теперь разберем первый фильтр - фильтр авторизации.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850