我正在开发一个.net webAPI项目,我们正在使用依赖注入(我相信StructureMap)为每个会话数据访问对象提供控制器实例。这部分效果很好。
我现在需要做的是使用DataAccessObject提供AuthorizationFilterAttribute的实例。
AuthorizationFilterAttribute通过注释使用。例如:
[ApiKeyAuthorization]
public DataModel ControllerAction(int id) { }
这将确保在控制器运行之前,检查授权。
我需要的是参考我的每会话共享数据库访问对象来创建ApiKeyAuthorization对象。
有没有一种简单的方法可以实现这一目标?
答案 0 :(得分:5)
关于依赖注入动作过滤器,有几个类似的问题。这里有一些:
Ninject and MVC3: Dependency injection to action filters
How to use dependency injection with an attribute?
Injecting dependencies into ASP.NET MVC 3 action filters. What's wrong with this approach?
Jimmy Bogart的博文(链接来自其中一个答案):http://lostechies.com/jimmybogard/2010/05/03/dependency-injection-in-asp-net-mvc-filters/
另一种基于StructureMap的解决方案:http://www.thecodinghumanist.com/blog/archives/2011/1/27/structuremap-action-filters-and-dependency-injection-in-asp-net-mvc-3
允许基于构造函数的注入操作过滤器的有趣解决方案:http://iridescence.no/post/Constructor-Injection-for-ASPNET-MVC-Action-Filters.aspx
希望它会带你走上正轨。