リクエストごとにCommunityPrincipal(IPrincipalインターフェイスを実装)オブジェクトを作成するHttpModuleがあります。リクエストごとにオブジェクトを保存したいので、キャストや再作成をしなくても、必要なときにいつでもオブジェクトを取得できます。
基本的に、FormsAuthenticationModuleの動作を模倣したいと思います。リクエストごとに、HttpContext.UserプロパティにIPrincipalインターフェイスを実装するオブジェクトを割り当てます。
どういうわけか、etcを呼び出せるようにしたいと思います。HttpContext.MySpecialUser(またはMySpecialContext.MySpecialUser-静的クラスを作成できます)は、オブジェクト(特定のタイプ)を返します。
拡張メソッドを使用することはできますが、リクエスト中にアクセスできるようにオブジェクトを保存する方法がわかりません。
これはどのように達成できますか?
特定のタイプとして保存したいことに注意してください(CommunityPrincipal-オブジェクトとしてだけではありません)。もちろん、処理中の現在のリクエストでのみ使用可能であり、他のすべてのスレッド/リクエストと共有されてはなりません。
現在、CommunityPrincipalオブジェクトをHttpModuleのHttpContext.Userに割り当てていますが、IPrincipalインターフェイスで定義されていないCommunityPrincipalオブジェクトのプロパティを使用する必要があるたびに、キャストを実行する必要があります。