asp.net-mvc – 自定义授权MVC 3和Ninject IoC
我有一个自定义的授权类,它继承自FilterAttribute并实现了IAuthorizationFilter.我正在使用最新版本的Ninject w / asp.net MVC 3支持.
我的问题是我正在使用构造函数注入来注入一个存储库.但是在OnAuthorization被调用的时候,存储库是空的.这是代码… 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 } } 过滤器绑定: Bind<IMyRepo>().To<MyRepo>().InRequestScope(); this.BindFilter<MyAuthorizeAttribute >(System.Web.Mvc.FilterScope.Controller,null).WhenControllerHas<MyAuthorizeAttribute >(); 更新: 更新2: 这在下面的工作,但是我需要在控制器的范围,而不是行动. this.BindFilter<MyAuthorizeAttribute >(System.Web.Mvc.FilterScope.Action,null).WhenActionMethodHas<MyAuthorizeAttribute >(); 解决方法
属性不支持由.NET Framework创建的构造函数注入,并且不受Ninject的控制.如果您真的想使用FilterAttribute(我不推荐),则必须使用属性注入.
而是继续你刚开始的您需要一个实现IAuthorizationFilter的过滤器(不派生自FilterAttribute,只需从上面的代码中删除它),另外还需要一个普通属性来标记控制器/操作. 然后改变绑定: this.BindFilter<MyAuthorizeFilter>(FilterScope.Controller,0).WhenControllerHas<MyAuthorizeAttribute>(); 见:https://github.com/ninject/ninject.web.mvc/wiki/MVC3 当前实现的问题是它被发现一次作为过滤器属性,一旦添加为普通过滤器.一个用于这些实例将使repo注入一个repo为null为另一个. 注意:如果这简化了实现,您可以从现有的FilterAttribute派生.但是在这种情况下不要将其用作属性,而将其用作普通过滤器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- openxml – 在Asp.net核心1.0中使用Microsoft.Office.Inter
- ASP.NET POST-DATA截断为49152字节(48K)
- asp.net-mvc – Kendoui MVC EditorTemplateName在PopUp编辑
- asp.net-mvc-3 – 使用ASP.net MVC 3.0进行RDLC报告
- asp.net-mvc – Ninject如何在ASP.NET MVC中创建控制器?
- asp.net – 偶尔获取SqlException:超时过期
- asp.net-mvc – 以编程方式获取MVC视图列表?
- .net – MVC3与EF 4.1和EntityState.Modified更新
- asp.net – 如何使用SignalR的跨域连接(CORS – 访问控制允
- asp-classic – 超过响应缓冲区限制
- asp.net – 我的自定义httpModule没有被MVC检测到
- asp.net-mvc – 使用ViewModel模式与MVC 2强类型
- asp.net-mvc-3 – MVC3 Razor使用Html.BeginForm
- Asp.Net Mvc – 用JQuery替换Ajax.ActionLink
- asp.net-web-api – 为什么我的超级简单的ASP.NE
- asp.net-core – 在程序集’ef’上找不到’UserS
- asp.net-mvc – HttpContext中需要什么来允许For
- ASP.net WebForms – 构造函数与Page_Load
- 【ASP.NET】12.ASP.NET Web开发实现log日志打印
- asp.net – 找出合适的工作语言:从C#分支出来