gpt4 book ai didi

asp.net - currentUser 作为模型绑定(bind)参数

转载 作者:行者123 更新时间:2023-12-03 18:31:01 24 4
gpt4 key购买 nike

现在我正在考虑一种模式,将“当前用户”作为我的操作中的模型绑定(bind)参数。

我的行为看起来像这样:

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;
}

我真的很喜欢这个 Action 不太依赖于另一个 Controller 属性。它使函数的“输入参数”更加清晰,可重用性更强,并且将来更容易测试。

虽然我有点害怕安全问题。我可能必须非常确定(即在 DefaultModelBinder 中)currentUser 永远不会被其他 ModelBinders 自动绑定(bind)。

如果这可能是一个好的模式,如果有什么我目前没有考虑但会在未来带来问题的东西,谁能给我点亮。

最佳答案

如果您担心其他 ModelBinders 会设置该参数,为什么不创建一个 ActionFilterAttribute,这样您就必须明确地装饰您的操作方法:

public class GetCurrentUserAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.ActionParameters["currentUser"] = filterContext.HttpContext.User;
}
}

然后使用它:

[GetCurrentUser]
public ActionResult Index(User currentUser)
{
}

绝对不像默认模型绑定(bind)器那样干净,但更明确。

关于asp.net - currentUser 作为模型绑定(bind)参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14103861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com