Ho un Autofac Web API di autorizzazione filtro del genere:C'è un modo per usare AutoFac Web Api Filtri di autorizzazione tramite Attributi invece di iniezione?
public class MyAuthorizationFilter : IAutofacAuthorizationFilter
{
public void OnAuthorization(HttpActionContext actionContext){}
}
public class MyAuthorizationAttribute : Attribute
{
public MyAuthorizationAttribute() { }
}
In questo momento l'unico modo in cui posso avere un'autorizzazione Filter Autofac Web API è attraverso l'iniezione in AutofacConfig.cs:
builder.RegisterType<MyAuthorizationFilter>()
.AsWebApiAuthorizationFilterFor<MyController>(
c => c.MyMethod(default(MyModel))
).InstancePerDependency();
e sembra che l'attributo viene ignorato se non iniettare come sopra
public MyController : ApiController {
[MyAuthroziationFilter] // ignored
[POST("")]
public HttpResponseMessage MyMethod(MyModel myModel) {
[...]
}
}
c'è un modo per utilizzare attributi/annotazioni di Aut oFac Web Api Autorizzazione Filtri invece di iniezioni tramite AutoFac e anche le loro dipendenze correttamente iniettate?
Stavo pensando che ci dovrebbe essere un modo migliore secondo questo commento: https://groups.google.com/d/msg/autofac/JZViZwr0sNA/C4h67OhMI7UJ (anche se stanno parlando di filtri azione) .Btw avevo per rifattorizzare il vecchio codice perché l'iniezione dei filtri era su tutti i miei apicontrollers e i filtri venivano colpiti per tutte le richieste. Ogni volta c'era un controllo se l'apicontroller è decorato con il rispettivo Attributo per filtrare le richieste corrette ... Ora sto iniettando sul metodo specifico come descrivo nella domanda. Ma sento che il codice sta diventando una lista di autorizzazioni ... –
Nota nel commento è per MVC. Come ho già detto, non c'è un'opzione analoga in Web API. Fidati di me, abbiamo avuto una lunga chiacchierata con i ragazzi di ASP.NET su questo argomento nel contesto di ASP.NET 5, cercando di dire loro di smettere di memorizzare le cose nella cache. –
Ok allora grazie :) - Non ho visto che tu sei il co-proprietario di Autofac :) –