現在、アクションのモデルバインドされたパラメーターとして「現在のユーザー」を持つパターンについて考えています。
私の行動は次のようになります。
public JsonResult ListStuff(User currentUser, string paramter1, int parameter2)
{
}
そして、私は次のような非常に単純なModelBinderを持っています:
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if ( bindingContext.ModelName == "currentUser" )
return Globals.HttpContextItems.User;
return null;
}
アクションが別のコントローラープロパティにあまり依存しないのが本当に好きです。これにより、関数の「入力パラメーター」がより明確になり、再利用性が高まり、将来的にはもう少し簡単にテストできるようになります。
しかし、私はセキュリティの問題に少し不安を感じています。currentUserが他のModelBinderによって自動的にバインドされないように(つまり、DefaultModelBinderで)確認する必要があります。
これが良いパターンかもしれないし、今私が考えていないことがあるが、それは将来問題になるだろうとしたら、誰もが光を当てることができますか?