我有一个带有联系人模型的ASP.NET Core2.0API,其中包含以下字段:
ID
、Name
、Company
、ProfilePicFileName
、Email
、BirthDay
、PhoneNumberWork
、PhoneNumberHome
、Address
。
POST请求允许客户端创建联系人记录。但它也可以设置ID
和ProfilePicFileName
的值,这是我想要防止的。
如何防止post请求设置某些值(即ID
和ProfilePicFileName
)。
发布于 2018-06-11 09:16:27
如何防止post请求设置某些值(即ID和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; }
}
这样,操作将只具有由模型绑定器填充的所需属性
[HttpPost]
public IActionResult Post([FromBody]ContactViewModel contact) {
//...
}
在操作中,视图模型可以映射回模型。
尽量避免将持久性模型用作数据传输对象,因为它可能会泄漏不打算通过网络发送的数据。它还可以暴露允许发送不打算发送的额外数据的向量。
操作应该只接受显式需要的内容(显式依赖原则)。并且应该只暴露必要的内容。
这样,客户端提供的附加值就不重要了。模型绑定器将只绑定必要的值。
https://stackoverflow.com/questions/50789079
复制相似问题