2017-10-20 10 views
0

インターセプタを作成してシンプルインジェクタに登録したいと考えています。 Simple Injectorチュートリアル(here)に基づいてインターセプタを作成します。シンプルインジェクタでインターセプタを作成して実行する

インターセプタはユーザーを認証するために使用されるため、メソッドのパラメータを読み取ってから、そのメソッドを実行する権限をユーザーに確認する必要があります。

注:メソッドを実行するための許可名を受け取る承認属性があります。

例:

public class ProfissionalController : ApiController, IInterceptionEnabler 

私はインターセプトにブレークポイントを置く:ここ

[Authorize("SaveProductsAuthorization")] 
public void SaveProducts(filter, dataToSave) 
{...} 

はこのように、IInterceptionEnableがある私のProfessionalControllerで迎撃登録

container.InterceptWith<MedTimeAuthorizeInterceptor>(
    serviceType => serviceType == typeof(IInterceptionEnabler)); 

container.RegisterSingleton<AuthorizeInterceptor>(); 

ですメソッドがAuthorize Interceptorにあり、何も起こりませんでした。

ここで何が間違っていますか?多分、傍受の登録が間違っていますか?

答えて

1

インターセプトは、返されるインターフェイスにのみ適用できます。あなたはコントローラを傍受しようとしていますが、コントローラは常にコンクリートタイプで返され、コンクリートタイプは盗むことができません

コントローラIInterceptionEnablerを実装していますが、ここでは重要ではありません。あなたがGetInstance<IInterceptionEnabler>()に電話すると、傍受が行われます。

関連する問題