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

相關問題