KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a custom authorization class that inherits from FilterAttribute and implements IAuthorizationFilter. I am using the latest version of Ninject w/ asp.net MVC 3 support. The problem I have is I am using constructor injection to inject a repository. But by the the time OnAuthorization is called, the repository is null. Here is the code... 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 } } Filter Binding: Bind<IMyRepo>().To<MyRepo>().InRequestScope(); this.BindFilter<MyAuthorizeAttribute >(System.Web.Mvc.FilterScope.Controller, null).WhenControllerHas<MyAuthorizeAttribute >(); Update: One thing I noticed is this filter is at controller level. I have other filters at action scope that seem to work properly...could that be the reason? Update 2: I've confirmed that if I change the filter scope to action, then the repository is available OnAuthorization (not null). This works below, however I need at controller scope, not action. this.BindFilter<MyAuthorizeAttribute >(System.Web.Mvc.FilterScope.Action, null).WhenActionMethodHas<MyAuthorizeAttribute >();
Tags (comma-separated)
Save Edits
Cancel