现在我正在考虑一种将“当前用户”作为我的操作中的模型绑定参数的模式。
我的动作看起来像这样:
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;
}
我真的很喜欢这个动作不太依赖另一个控制器属性。它使函数的“输入参数”更加清晰,更易于重用,并且将来更容易测试。
我有点害怕安全问题。我可能必须非常确定(即在 DefaultModelBinder 中)currentUser 永远不会被其他 ModelBinder 自动绑定。
如果这可能是一个好的模式,并且如果有一些我目前没有考虑的东西,那么任何人都可以发光,但这会在未来产生问题。