Отключить токен подтверждения запроса в ASP. NET Core - PullRequest
0 голосов
/ 28 февраля 2020

ASP. NET Ядро MVC, похоже, вводит токен подтверждения запроса во все мои формы:

<form class="actions" method="post">
    <input type="submit" class="btn btn-primary" value="Yes">
    <a class="btn btn-secondary" href="/some/url">No</a>
    <input name="__RequestVerificationToken" type="hidden" value="...">
</form>

Я работаю с CSRF в Ajax и не хочу этот дополнительный input элемент во всех моих формах. Любой способ отключить его?

Элемент добавляется даже без вызова AddAntiforgery в Startup.cs. Я работаю на ASP. NET Core 3.1.

Ответы [ 2 ]

1 голос
/ 28 февраля 2020

Промежуточное программное обеспечение для защиты от подделки добавляется в контейнер внедрения зависимости, когда в Startup вызывается один из следующих API.

AddMvc
MapRazorPages
MapControllerRoute
MapBlazorHub

Подробности, пожалуйста, проверьте этот документ

Чтобы отключить его, попробуйте ниже атрибут IgnoreAntiforgeryToken

[Authorize]
[AutoValidateAntiforgeryToken]
public class ManageController : Controller
{
    [HttpPost]
    [IgnoreAntiforgeryToken]
    public async Task<IActionResult> DoSomethingSafe(SomeViewModel model)
    {
        // no antiforgery token required
    }
}

Подробности можно найти здесь

0 голосов
/ 28 февраля 2020

Просто я хотел бы сослаться на то, что [IgnoreAntiforgeryToken] может использоваться для отключения глобального атрибута [AutoValidateAntiForgeryToken] при определенных действиях, если это необходимо.

public class Startup
{
  public void ConfigureServices(IServiceCollection services)
  {
    services.AddMvc(options =>
    {
        options.Filters.Add(new IgnoreAntiforgeryTokenAttribute());
    });
  }
}
...