2

ASP.NET MVCを使用してエンドポイントを設定しています。このエンドポイントに対して、データ(基本的にはAPI)を操作および取得するための要求を行うことができます。2本足のOAuthモデルを使用して、秘密鍵と署名方法、およびハイジャックを防ぐためのナンステーブルを使用してリクエストが署名されていることを検証しています。

モデルバインディングはASP.NETMVCで非常に便利なので、リクエストを消費するためにそれを利用しますが、署名の検証とナンス/タイムスタンプの処理をモデルバインダーに直接組み込むことができるかどうか疑問に思います。これは可能ですか?そうすれば、作成したさまざまなアクションの実装を再利用できます。

4

1 に答える 1

1

できるはずだと思います。これを試して:

public class FooModelBinder : IModelBinder
    {
        public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            FooModel fooModel = bindingContext.Model as fooModel;
            if (fooModel != null)
            {
               // Do your verification stuff in here
               // Updating any properties of your Model.
               // Or you could retrieve something else entirely and return it if you like
               // Let's pretend we just want to verify the model and set some property or other.
               fooModel.NonceOkay = DoVerification(fooModel);
               fooModel.NextAction = WorkOutWhereToGoNext(fooModel);
               // or whatever
            }
            return fooModel;
        }
    }

DoVerificationModelBinder に存在することもできますが、別の場所に存在する方がよい場合があります。

次に、これを Global.asax の Application_Start に貼り付けます。

ModelBinders.Binders.Add(typeof(Foo), new FooModelBinder());
于 2011-06-20T22:33:51.247 に答える