L'ordine di esecuzione del filtro è definito dai relativi tipi, Order e infine Scopes.
Da msdn:
Ordine del filtro
Filtri eseguiti nel seguente ordine:
- filtri di autorizzazione
- filtri di azione
- filtri di risposta
- Filtri di eccezione
Ad esempio, i filtri di autorizzazione vengono eseguiti per primi e i filtri di eccezione vengono eseguiti per ultimi. All'interno di ciascun tipo di filtro, il valore dell'ordine specifica l'ordine di esecuzione. All'interno di ciascun tipo di filtro e ordine, il valore di enumerazione dell'ambito specifica l'ordine dei filtri. Questa enumerazione definisce i seguenti valori di filtro portata (nell'ordine in cui essi corrono):
- Prima
- globale
- controller
- azione Ultimo
Per esempio, un OnActionExecuting (Filtro ActionExecutingContext) che ha la proprietà Order impostata su zero e l'ambito del filtro impostato su First runs prima di un filtro di azione con la proprietà Order impostata su zero e l'ambito del filtro impostato su Action. Poiché i filtri delle eccezioni vengono eseguiti in ordine inverso, un filtro di eccezione con la proprietà Ordine impostata su zero e l'insieme di filtri impostato su Primo viene eseguito dopo un filtro di azione con la proprietà Ordine impostata su zero e l'ambito del filtro impostato su Azione.
E infine:
L'ordine di esecuzione dei filtri che hanno lo stesso tipo, ordine e portata è indefinito.
per i ValidateAntiForgeryToken e Authorize filtri sono dello stesso tipo, ordine e la portata troppo (entrambi essendo definito) per cui l'ordine di esecuzione sarà indefinito. Da quel momento, la tua unica opzione è, come già sai, definire una proprietà Order
per entrambi.
Per vostra informazione, la proprietà FilterScope non viene visualizzata nel mio Intellisense ma dopo averlo digitato, appare infine.
Ho modificato il titolo. Per favore vedi, "[Le domande dovrebbero includere" tag "nei loro titoli?] (Http://meta.stackexchange.com/questions/19190/)", dove il consenso è "no, non dovrebbero". –