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

同じクラスをフィルタと属性として使用できます。しかし、別の属性を定義し、それが定義されているかどうかを確認することもできます。

次に、filters.Add(new HandleErrorAttribute());のように、フィルタ/属性クラスをGlobal.asaxの中に登録する必要があります。

フィルタメソッド(あなたのケースでは、OnAuthorizeである必要があります)の中で、他の属性IsDefinedがあるかどうか、またはいくつかのプロパティが定義されているかどうかを確認できます。

+0

それで、フィルタをグローバルフィルタとして登録する必要があると言います。これはすべてのリクエストで実行され、その実行チェックの一環として、別の属性が定義されているかどうかを確認します。 – Josh

+0

それだけです。私が理解したところから。 – rcaval

+0

さて、私は実際にそれを試みましたが、私はすべての要求を実行することに熱心ではありませんでした。私はDIを必要としないようにいくつかのことをリファクタリングすることができました。その時点で私はフィルターと属性を崩壊させました。だからあなたはNinjectのものに似たautofac構文を認識していませんか? – Josh

関連する問題