asp.net-core - 防止 Post Request 在 Asp.Net Core 2.0 API 中设置某些值

标签 asp.net-core asp.net-core-2.0 asp.net-core-webapi

我有一个 ASP.NET Core 2.0 API,其中包含具有以下字段的联系人模型:

ID名称公司ProfilePicFileName电子邮件生日电话号码工作电话号码家庭地址

POST 请求允许客户端创建联系人记录。但它也可以设置 IDProfilePicFileName 的值,这是我想阻止的。

如何阻止 post 请求设置某些值(即 IDProfilePicFileName)。

最佳答案

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/

相关文章:

c# - 在响应 header 中传递非 ASCII 字符

asp.net-core - 如何为 ResponseCacheAttribute 动态设置持续时间

c# - 尝试使用 Hangfire 时的自引用循环

c# - .NET Core Singleton Creation 被多次调用

c# - 具有应用程序见解的依赖关系日志记录不会记录响应

c# - IntelliSense 提示缺少 Microsoft.AspNetCore 包,尽管在那里

docker - 如何在 Ubuntu 14.04 上使用 dotnet CLI 注册新的 NuGet 包源?

c# - Dotnet 运行和 System.TypeLoadException

asp.net - .NET Core 2 CookieAuthentication 忽略过期时间跨度

c# - ASP.Net Core API 总是返回 401 但包含 Bearer token