2013-10-08 5 views

ответ

9

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

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

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

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

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

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

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

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

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

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

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

1

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

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

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

3

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

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

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