Come da domanda, sì, possiamo implementare la stessa logica in entrambi IActionFilter
e IAuthorizationFilter
. ma l'unico ordine di esecuzione è diverso.
Il quadro ASP.NET MVC supporta quattro differenti tipi di filtri:
Authorization – Implements IAuthorizationFilter Attribute.
Action – Implements IActionFilter Attribute.
Result – Implements IResultFilter Attribute.
Exception – Implements IExceptionFilter Attribute.
Nota:filtri vengono eseguiti nell'ordine di cui sopra.
filtri di autorizzazione vengono sempre eseguite prima azione filtra e filtri eccezioni sono sempre eseguito dopo ogni altro tipo di filter
.
Authorization
i filtri vengono utilizzati per implementare authentication
e authorization
per le azioni del controllore. Ad esempio, il filtro Autorizza è un esempio di filtro di autorizzazione.
I filtri di azione contengono la logica che viene eseguita prima e dopo l'esecuzione di un'azione del controllore. È possibile utilizzare un filtro azione, ad esempio, per modificare i dati della vista restituiti da un'azione del controller.
Result
i filtri contengono la logica che viene eseguita prima e dopo l'esecuzione di un risultato della vista. Ad esempio, potresti voler modificare un risultato di visualizzazione appena prima che la vista sia resa al browser.
Exception
i filtri sono l'ultimo tipo di filtro da eseguire. È possibile utilizzare un filtro di eccezione per gestire gli errori generati dalle azioni del controller o dai risultati dell'azione del controller. È inoltre possibile utilizzare i filtri delle eccezioni per registrare gli errori.
Ogni diverso tipo di filtro viene eseguito in un ordine particolare. Se si desidera controllare l'ordine in cui vengono eseguiti i filtri dello stesso tipo, è possibile impostare la proprietà dell'ordine di un filtro.
Nota:La classe base per tutti i filtri azione è la classe System.Web.Mvc.FilterAttribute
.