dependecy注射用MVC 5にDataProtectionProviderを取得し、私は言うどのDpapiDataProtectionProvider
にマイクロソフトdocumenationつまずいています から導出されたデータ保護サービスを提供するために使用しが正しく
データ保護API アプリケーションがASP.NETによってホストされておらず、すべてのプロセスが同じドメインIDの として実行されている場合は、データ保護の最良の選択です。
質問が突然発生します。アプリケーションがASP.NETでホストされているときに最適な選択肢は何ですか?
さらに検索すると、OWINからDataProtectionProvider
を取得することをお勧めします。これは、IAppBuilder
を持っていて、Microsoft.Owin.Security.DataProtection
名前空間にあるAppBuilderExtensions
を使用して、app.GetDataProtectionProvider()
と呼ぶスタートアップ構成で実行できます。
これまでのところ、私はかなり満足しています。ただし、クラスのコンストラクタにDataProtectionProvider
を挿入する必要があります(例:UserManager
)。私はone suggestionを見たところで、静的なプロパティにDataProtectionProvider
を格納し、それを必要な場所で使用していますが、それは間違った解決策のようです。
私は以下のコードと同様のソリューションは、(ninjectコンテナを使用して)適切であろうと思う:
kernel.Bind<IDataProtectionProvider>()
// beware, method .GetDataProtectionProvider() is fictional
.ToMethod(c => HttpContext.Current.GetOwinContext().GetDataProtectionProvider())
.InRequestScope();
私がこれを正しく理解している場合、DIコンテナはスタートアップクラスで初期化する必要があります。 – Santhos
はい、またはコンポジションルートの一部である限り、 'Startup'クラスによって呼び出されるクラスです。他の人がNinjectをOWINでセットアップする方法について質問しました(私はそれを見つけることができません)。これは、OWINとNinjectの両方がアプリケーションの開始点を所有したいので、大きなラットネストになります。 Ninjectもそこで最も遅いDIコンテナの1つであることを考慮すると、私は個人的に統合しやすい別のコンテナを見つけるでしょう。 – NightOwl888
アドバイスをいただきありがとうございますが、これは進行中のプロジェクトですので、ninjectを何かに変更することはオプションですが、後で行います。 – Santhos