如何使用Autofac将属性“绑定”到动作过滤器?

时间:2011-12-21 16:05:25

标签: asp.net-mvc asp.net-mvc-3 autofac action-filter filterattribute

我有一个自定义授权过滤器,它具有构造函数注入的依赖项。

public class CustomAuthorizationFilter : IAuthorizationFilter

一个只保存数据的通用属性。

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
public class CustomAuthorizeAttribute : FilterAttribute

我借的方法"来自here,我真的很喜欢这种分离。我理解过滤器是如何进行的,并且"得到"该属性,但我错过了一些电子邮件。

我如何"绑定"过滤器的属性,以便在属性存在时调用过滤器? Ninject似乎有syntax for this。但我还没有找到Autofac中的等价物

如果这是我需要在Autofac以外的应用中设置的,那也很好。

谢谢! 约什

1 个答案:

答案 0 :(得分:1)

您可以使用同一个类作为过滤器和属性。但您也可以定义另一个属性并检查它是否已定义。

然后您必须注册过滤器/属性类:在Global.asax内,就像filters.Add(new HandleErrorAttribute());一样。

在filterMethods中(在您的情况下,应该是OnAuthorize),您可以检查是否有其他属性IsDefined或是否定义了某些属性。