Разница между IActionFilter и IAuthorizationFilter

Мне просто интересно, есть ли разница между IActionFilter и IAuthorizationFilter?

Я предполагаю, что мы можем реализовать ту же логику под IActionFilter, что, вероятно, имеет IAuthorizationFilter ... Это правда?

Спасибо!


person DmitryBoyko    schedule 08.10.2013    source источник


Ответы (3)


Что касается вопроса, да, мы можем реализовать одну и ту же логику как в IActionFilter, так и в IAuthorizationFilter. но отличается только порядок выполнения.

Платформа ASP.NET MVC поддерживает четыре различных типа фильтров:

    Authorization – Implements  IAuthorizationFilter Attribute.
    Action        – Implements IActionFilter Attribute.
    Result        – Implements  IResultFilter Attribute.
    Exception     – Implements  IExceptionFilter Attribute.

Примечание. Фильтры выполняются в порядке, указанном выше.

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

Фильтры Authorization используются для реализации authentication и authorization действий контроллера. Например, фильтр авторизации является примером фильтра авторизации.

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

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

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

Каждый тип фильтра выполняется в определенном порядке. Если вы хотите управлять порядком, в котором выполняются фильтры одного типа, вы можете установить свойство Order фильтра.

Примечание. Базовым классом для всех фильтров действий является класс System.Web.Mvc.FilterAttribute.

person joshua    schedule 08.10.2013

Фильтры авторизации запускаются очень рано в конвейере действий. Они хороши, например, для выхода из конвейера действий, когда условия не выполняются. (Примеры атрибутов фреймворка MVC, которые его используют, — [Authorize], [RequireHttps])

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

person A Khudairy    schedule 08.10.2013

Да, вы можете реализовать фильтр аутентификации с фильтром действий. Из здесь:

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

Боюсь, я не знаю, почему существует разница, кроме того, что IAuthorizationFilter - это более простой интерфейс с одним методом, он также имеет меньше свойств в своем контексте.

person user2586804    schedule 08.10.2013