Запретить Post Request от установки определенных значений в Asp.Net Core 2.0 API - PullRequest
0 голосов
/ 11 июня 2018

У меня есть ASP.NET Core 2.0 API с моделью контакта со следующими полями:

ID, Name, Company, ProfilePicFileName, Email, BirthDay, PhoneNumberWork, PhoneNumberHome, Address.

Запрос POST позволяет клиенту создать запись контакта.Но он также может устанавливать значения для ID и ProfilePicFileName, которые я хочу запретить.

Как я могу запретить пост-запросу устанавливать определенные значения (а именно ID и ProfilePicFileName).

1 Ответ

0 голосов
/ 11 июня 2018

Как запретить пост-запросу устанавливать определенные значения (а именно 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) {
    //...
}

внутри действия, в котором модель представления может быть сопоставлена ​​с моделью.

Старайтесь избегать использования ваших моделей персистентности в качестве объектов передачи данных, так как это может привести к утечке данных, которые не предназначались для передачи по проводам.Он также может предоставлять векторы, которые позволяют отправлять дополнительные данные, которые не предназначались для отправки.

Действия должны принимать только то, что явно требуется (принцип явной зависимости).И должен раскрывать только то, что необходимо.

Таким образом, не имеет значения, какие дополнительные значения предоставляет клиент.Связыватель модели будет связывать только необходимые значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...