0

と を使用UserNamePasswordValidatorして、IAuthorizationPolicyカスタム ロール データIPrincipalを認証用のオブジェクトにロードし、サーバー側でビジネス レベルの権限を取得します。

したがって、Thread.CurrentPrincipalサービス操作内で権利などをテストするために使用しています。必要以上に技術的になるリスクがありますが、これはクラスのstaticプロパティであり、インスタンススコープのグローバルscpope があることを意味します (Thilak に感謝します)。将来、パフォーマンス上の理由からに変更する必要があります。このスキームは確実に壊れますか? スレッドセーフなコードを書く必要があることは承知しているので、それ自体は単なる設定変更ではありません。Thread InstanceContextModeSingleSingle

また、この問題を心配する必要がある前に、WCF が処理できるインスタンスの負荷の正確な種類に関する信頼できるテキストへのリンクを共有していただけますか?

4

1 に答える 1

0

ここにリンクがあります

http://msdn.microsoft.com/en-us/magazine/cc948343.aspx

ここに私の2セントがあります:

Thread.CurrentPrincipal は静的です。これは、インスタンス スコープではなく、グローバル スコープを持つことを意味します。ただし、たまたまスレッド アフィニティも持っています。つまり、プロパティは [ThreadStatic] とマークされています。これは、現在のスレッドに対してのみグローバル スコープを持っていることを意味します。Thread.CurrentPrincipal を使用するコードは、シングルトン モードであるかどうかに関係なく変更する必要がないため、これはシナリオにとって素晴らしいニュースです。

ps IAuthorizationPolicy が実行されている Thread コンテキストを確認してください。過去に、クレイジーで注入されたセキュリティ ポリシーで Thread.CurrentPrincipal を設定する際の問題点を明確に思い出します。IAuthorizationPolicy で実行されているスレッドが、Service メソッドが呼び出されるスレッドと同じであることを確認してください。

于 2011-08-11T21:29:00.217 に答える