4

我有一个定制的授权过滤器,它具有构造函数注入的依赖关系。如何使用Autofac“绑定”属性到动作过滤器?

public class CustomAuthorizationFilter : IAuthorizationFilter 

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

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

我从here“借来”的方法,我真的很喜欢分离。我理解过滤器如何去“获取”属性,但我错过了一些东西。

如何将该属性“绑定”到筛选器,以便在属性存在时调用筛选器? Ninject似乎有syntaxforthis。但我还没有想出Autofac中的等价物

如果这是我需要在Autofac之外的应用程序中设置的东西,那也没关系。

谢谢! Josh

回答

1

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

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

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

+0

所以你说你需要注册过滤器作为一个全局过滤器,它会在每个请求上执行,然后作为执行的一部分检查是否定义了另一个属性? – Josh 2011-12-21 22:47:24

+0

就是这样。从我的理解。 – rcaval 2011-12-22 11:55:38

+0

好的,我确实尝试过,但我并不热衷于执行每个请求。我能够重构一些东西以避免需要DI,此时我将过滤器和属性合并在一起,但我宁愿将它们分开。所以你不知道任何类似于Ninject的autofac语法? – Josh 2011-12-22 14:43:25

相关问题