По вопросу, да, мы можем реализовать ту же логику как в 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
.