我有一个 ASP.NET Core 2.0 API,其中包含具有以下字段的联系人模型:
ID
、名称
、公司
、ProfilePicFileName
、电子邮件
、生日
、电话号码工作
、电话号码家庭
、地址
。
POST 请求允许客户端创建联系人记录。但它也可以设置 ID
和 ProfilePicFileName
的值,这是我想阻止的。
如何阻止 post 请求设置某些值(即 ID
和 ProfilePicFileName
)。
最佳答案
How can I prevent post request from setting certain values(namely ID and ProfilePicFileName).
通过创建特定于相关操作的模型来排除不需要的属性。
public class ContactViewModel {
public string Name { get; set; }
public string Company { get; set; }
public string Email { get; set; }
public DateTime BirthDay { get; set; }
public string PhoneNumberWork { get; set; }
public string PhoneNumberHome { get; set; }
public string Address { get; set; }
}
这样,操作将仅具有由模型绑定(bind)器填充的所需属性
[HttpPost]
public IActionResult Post([FromBody]ContactViewModel contact) {
//...
}
在操作中, View 模型可以映射回模型。
尽量避免使用持久性模型作为数据传输对象,因为它可能会泄漏不应该通过网络发送的数据。它还可以公开允许发送原本不打算发送的其他数据的向量。
操作应该只接受明确要求的内容(显式依赖原则)。并且应该只公开必要的内容。
这样,客户端提供什么附加值并不重要。模型绑定(bind)器只会绑定(bind)必要的值。
关于asp.net-core - 防止 Post Request 在 Asp.Net Core 2.0 API 中设置某些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50789079/