2

カスタム トークンのリクエスト ヘッダーをチェックする、一部のアクションにのみ必要なカスタム認証属性があります。トークンはデータベースでチェックされます。データベースをチェックするには、コンストラクターを介して注入したいサービスへのアクセスが必要です。

私がこれを行うことができると読んだ方法(herehere、およびhere)は、コンストラクターのないフィルターを使用し、次のように依存フィルターを注入することです。

kernel.BindFilter<MyAuthorizeFilter>(FilterScope.Controller, 0).WhenControllerHas<MyAuthorizeAttribute>();

ただし、こちらで説明されているように Ninject をセットアップしているため、BindFilter メソッドは使用できません。Ninject MVC3 は MVC4 RC では動作しないと読んだので、これはNinject MVC3の代わりにNinject.Web.Commonを使用しています。これを達成するには、他にどうすればよいですか?

GlobalFilters.Filters に追加できることも読みましたが、すべてのアクションに存在させたくありません。

ご回答ありがとうございます。

4

1 に答える 1

1

アプリケーションをどのようにセットアップしたか完全にはわかりませんが、私の経験では、WebApiコントローラーのフィルターが必要な場合HttpFilterCollectionは、GlobalConfiguration.Filters. これは、MVC が ( を通じて) 使用するものとは異なるGlobalFilterCollectionフィルターのセットです。

于 2012-08-30T21:23:49.317 に答える