問題タブ [unity-interception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
222 参照

security - 透過的な認証の信頼性

ビジネスロジッククラスでのカスタム認証用のギアが必要です。権限ベースのシステムである必要がありますが、承認ルールをメソッドに適用する方法を決定できません。

私の最初の考えは、カスタム属性をメソッドに適用することでした

私のビジネスロジッククラスにはインターフェイスがあるので、たとえばUnity Interceptionの動作を使用して、現在のユーザーに必要なアクセス許可があるかどうかを実行時にチェックできます。そして、そうでない場合は例外をスローします。

しかし今、私はこの方法の信頼性について心配しています。

通常、Unityコンテナによって注入されるビジネスロジッククラスへの参照。したがって、インターフェース傍受メカニズムを適用するように構成されているため、問題はありません。

しかし、開発者が私のビジネスロジッククラスを直接インスタンス化するとしたらどうでしょうか。その後、インターセプトは適用されず、現在のユーザーが何らかのアクションを実行する権限を持っていない場合や、認証されていない場合でも、メソッドを呼び出すことができます。

また、誰かがユニティコンテナの構成を変更し、Interception拡張機能を完全にオフにすることができます。繰り返しますが、私の認証システムは機能しません。


ASP.NETMVCが承認に同様のメカニズムを使用しているのを見ました。承認ルールは、要求が標準的な方法(IController.Execute)で送信された場合にのみ適用されます。この場合、コントローラーのエンドユーザー(Webユーザー)にはコントローラークラスに直接アクセスする方法がないため、これは問題ではないと思います。

私の場合、ビジネスロジックのエンドユーザーはフロントエンドを開発するプログラマーであり、意図的または意図せずに物事をねじ込むことができます。ビジネスロジッククラスのインスタンスを作成し、任意のメソッドを呼び出すことができます。

何を提案できますか?この種の問題にどのように対処しますか?

ありがとうございました。

0 投票する
1 に答える
550 参照

unity-container - Unityで[HandlerAttribute]ベースのインターセプトをデフォルトですべてのものに機能させる方法は?

私は自分のプロジェクトでベースのインターセプトを使用したいと考えています[HandlerAttribute](新しい開発者にとっては少し明白だからです)。ただし、明示的に指定new InterceptionBehavior<PolicyInjectionBehavior>()しない限り、動作させることはできませんRegisterType

通話[HandlerAttribute]を汚染することなく、すべての検出を有効にする簡単な方法はありますか?RegisterType

0 投票する
2 に答える
364 参照

c# - InterfaceInterceptor によって生成されたプロキシへの属性のコピー

WCF 経由で公開されているインターフェイスがあるとします。

そして実装:

私は WCF 経由で公開できService、すべてがうまく機能します。

ここで、Unity を使用して の傍受を実行したいと考えていますService。そのためにWCFの動作を使用できますが、IService(およびServiceそれを実装する)WCF経由ではなく内部サービスによってアクセスされる場合があり、WCF経由でクラスにアクセスするときとローカルにアクセスするときの両方に適用される傍受メカニズムが必要です。

これにはUnityを使用できますInterfaceInterceptorが、取得したプロキシにはServiceBehavior属性がありません。これは明らかにWCFの動作に影響するため、必要です。

これで、クラスから継承する(したがって、属性を継承する) TransparentProxyInterceptororを使用できますが、この場合に使用する「正しい」インターセプターのように思えます。結局のところ、私はここでインターフェースを扱っています。VirtualMethodInterceptorServiceInterfaceInterceptor

Unity のコードを見ると、プロキシの生成にInterfaceInterceptor使用されているようです。Reflection.Emitのみを使用TypeBuilder.SetCustomAttributesした場合、元のタイプから属性をコピーして、プロキシに適用するだけで済みます。ただし、これを行うための Unity 拡張ポイントが見つかりませんでした。私が得た最も近いものは でしたInterfaceInterceptorClassGeneratorが、それも公開されていませんTypeBuilder

を拡張しInterfaceInterceptorて、基になる実装から属性をコピーする簡単な方法はありますか? プロキシに適用するためにServiceBehavior指定されたものを取得する別の方法はありますか?Service

0 投票する
1 に答える
1116 参照

unity-container - Unity 2.0 ポリシー インジェクションを設定して、設定ファイルでカスタム属性一致ルールを使用するにはどうすればよいですか?

Unity 2.0 ポリシー インジェクションを設定して、設定ファイルでカスタム属性一致ルールを使用するにはどうすればよいですか?

私が望むのは、unity 構成ファイル内の次のコード スニペットを翻訳することです。

0 投票する
3 に答える
4709 参照

c# - 横断的関心事としての例外処理を解決するためのユニティインターセプトの使用

私は次のように独自の動作を作成しました。

動作が期待どおりにヒットするように、正しく設定されています。ただし、getNext()で例外が発生しても、catchブロックにはヒットしません。誰かが理由を明確にできますか?例外に対処する方法はたくさんあるので、私は実際には問題を解決しようとは思っていません。何が起こっているのかわからないというだけでなく、やりたいと思っています。

0 投票する
2 に答える
1254 参照

unity-container - Unity インターセプトの設定についてヘルプが必要

まず、これまで Unity を使用したことがありませんでした... Unity インターセプトを使用して、プロジェクトに Tracing / Logging を導入したいと考えています。
プロジェクトはかなり大きい (~30000 ファイル)。目標は、外部サービスを呼び出すたびにパフォーマンス/実行期間をトレースすることです。残念ながら、他のライブラリは使用できません。
この概念がどのように機能するかを理解するために、MSDN で見つけた小さなプログラムを作成しました。ただし、ログ属性を使用した傍受はまだ発生しません。いくつかの構成または/および初期化が欠落していると確信しています。助けていただければ幸いです。

ここに私のメインプログラムがあります:

ここに電卓クラスがあります:

ここに私の CallHandler があります:

そして最後に

*ここに私の属性定義があります:

このコードが機能するためには、他に何を追加する必要があり、どこに (構成ファイルまたは内部コンストラクターなど) 追加する必要がありますか。

0 投票する
1 に答える
2392 参照

c# - Microsoft Unity インターフェイス インターセプトとコンストラクター インジェクションの違い

asp.net unityでのインターフェイス インターセプトとコンストラクタ インジェクションの違いは何ですか? Unity で DI を理解していません。古いプロジェクトと unity.config で作業しています。

しかし、持っていない人もいます

しかし、プロジェクトでは、これらのクラスとインターフェースは次のように同じように機能します

0 投票する
1 に答える
2411 参照

.net - Unityの呼び出しサイトでインターセプトされたメソッドの完全なスタックトレース

Unityを使用して、インターセプトを使用したロギングサービスメソッドを処理することを検討しています。ただし、1つの懸念は、完全なスタックトレースが呼び出しサイトで利用できないことです。インターセプターコール内でのみ使用できます。

設定例は次のとおりです。

そのプログラムの実行によるコンソール出力は次のとおりです。

インターセプターのスタックトレースは問題なく、サービスレベルでのログ記録には十分です。ただし、コールサイトでの傍受プロキシコールを過ぎるとすべてが失われます。

ServiceExceptionなどのインターセプターで例外をラップできます。これにより、呼び出しスタックが内部例外に保持されますが、ログ記録とデバッグ検査のシナリオが厄介になります(ただし、トレースを完全に失うよりも厄介ではありません)。

また、TransparentProxyInterceptorを使用すると、多かれ少なかれ必要なものが得られることに気付きましたが、これはInterfaceInterceptionよりも低速であり、一部のグループでアラームベルがトリガーされます。

プロキシの呼び出しサイトでUnityインターセプトを使用して完全なスタックトレースを取得するためのよりクリーンな方法はありますか?

0 投票する
3 に答える
12953 参照

c# - Unity を使用して IMyInterface.SomeMethod へのすべての呼び出しをインターセプトする

Unity インターセプターを学習しようとしていますが、なかなかうまくいきません。

次のようなインターフェースがあるとします。

そして、次のようにそのインターフェースを実装する未知の数のクラスがあります。

IMyInterface のすべてのインスタンス (列挙したくない) に対して、SomeMethod が呼び出されたときにインターセプターを実行する方法を探しています。

私に問題を引き起こしているのは、クラスの非列挙です。(すべてのクラスを列挙できる場合は、多くの例があります。)

Type Interception を読んだことがありますが、探していることができるかどうかはわかりません。

Unity の専門家は、私が探していることを行う方法を知っていますか?

0 投票する
1 に答える
226 参照

c#-4.0 - 単一性を介して解決しながら、実行時に依存関係の奥深くにコンストラクターパラメーターを挿入する方法

以下では、実行時にモデルの依存関係の 1 つにコンストラクター パラメーターを挿入しようとしている場合、パラメーター オーバーライド オプションを使用しません。私たちがしなければならないことは他にありますか?

マッピング ユニティ: