utorização personalizada MVC 3 e Ninject IoC
Tenho uma classe de autorização personalizada que herda de FilterAttribute e implementa IAuthorizationFilter. Estou usando a versão mais recente do Ninject com suporte a asp.net MVC 3.
O problema que tenho é que estou usando injeção de construtor para injetar um repositório. Mas quando OnAuthorization é chamado, o repositório é nulo. Aqui está o código ...
public class MyAuthorizeAttribute : FilterAttribute, IAuthorizationFilter
{
private readonly IMyRepo _MyRepo;
public MyAuthorizeAttribute() { }
public MyAuthorizeAttribute(IMyRepo myRepo)
{
_MyRepo= myRepo; //this gets initialized
}
public void OnAuthorization(AuthorizationContext filterContext)
{
_MyRepo.DoStuff(); //<< Null, wtf
}
}
Vinculação de Filtro:
Bind<IMyRepo>().To<MyRepo>().InRequestScope();
this.BindFilter<MyAuthorizeAttribute >(System.Web.Mvc.FilterScope.Controller, null).WhenControllerHas<MyAuthorizeAttribute >();
Atualizar Uma coisa que notei é que esse filtro está no nível do controlador. Tenho outros filtros no escopo de ação que parecem funcionar corretamente ... poderia ser esse o motivo?
Update 2:onfirmei que, se eu alterar o escopo do filtro para ação, o repositório estará disponível OnAuthorization (não nulo
Isso funciona abaixo, no entanto, preciso no escopo do controlador, não açã
this.BindFilter<MyAuthorizeAttribute >(System.Web.Mvc.FilterScope.Action, null).WhenActionMethodHas<MyAuthorizeAttribute >();