gpt4 book ai didi

c# - MVC3 停止模型值由客户端设置

转载 作者:行者123 更新时间:2023-12-02 22:40:26 24 4
gpt4 key购买 nike

这不是一个主要问题,但绝对是一个很高兴看到解决的问题。

例如,我有一个看起来像这样的模型(不是为了节省阅读时间我删掉了一些,我确实有确认字段等 :)):

public class NewUser
{
[Required]
public string Username{ get; set; }
[Required]
public string Password{ get; set; }

public string Salt{ get; set; }
}

在发布后(验证后)的代码中,我创建了一个盐,用于以一种方式加密密码,将它放在模型中非常有用(我知道我可以将其省略,但我宁愿不这样做).

如果在发布时,用户向他们的查询字符串添加 &salt=blahblahblah,一旦页面被回发并且 MVC 与模型匹配,它就会分配值 blahblahblah 按预期添加到我的模型中,我对此没有问题,因为我总是可以覆盖它。

有什么方法可以让 MVC 不将模型中的值分配给从回传发送的内容,因为其他模型中有一些我不希望它有可能的值设置(我有我的变通方法可以将它们重置为它们应该设置的状态,但是如果有人想尝试破解某些值,那么缺少它可能会导致问题)。

最佳答案

您可以使用 BindAttribute在模型绑定(bind)期间将属性列入白/黑名单:

您可以在全局模型级别应用它:

[Bind(Exclude="Salt")]
public class NewUser
{
[Required]
public string Username{ get; set; }
[Required]
public string Password{ get; set; }

public string Salt{ get; set; }
}

或者在单独的 Controller 操作级别:

public ActionResult MyAction([Bind(Exclude="Salt")] NewUser user)
{
//...
}

关于c# - MVC3 停止模型值由客户端设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10849252/

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