web-dev-qa-db-fra.com

Html.AntiForgeryToken () toujours requis?

@Html.AntiForgeryToken() est-il toujours requis dans ASP.NET .NET4.6 vNext?

Les décorations du formulaire ont changé pour

<form asp-controller="Account" 
      asp-action="Login" 
      asp-route-returnurl="@ViewBag.ReturnUrl" 
      method="post" 
      class="form-horizontal" 
      role="form">

De cela

@using (Html.BeginForm("Login", 
                       "Account", 
                       new { ReturnUrl = ViewBag.ReturnUrl }, 
                       FormMethod.Post, 
                       new { @class = "", role = "form" }))

Et ne l'incluez plus

@Html.AntiForgeryToken()

Les actions du contrôleur sont toujours marquées avec l'attribut ValidateAntiForgeryToken comme prévu, alors d'où vient-il exactement? Automatiquement?

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
22
matt.

L'assistant de balise de formulaire ajoutera automatiquement le jeton anti contrefaçon. (Sauf si vous l'utilisez comme élément de formulaire html standard, ajoutez manuellement un attribut action). Vérifiez le code source de helper de balise de formulaire , vous verrez ce qui suit à la fin de la méthode Process.

if (Antiforgery ?? antiforgeryDefault)
{
    var antiforgeryTag = Generator.GenerateAntiforgery(ViewContext);
    if (antiforgeryTag != null)
    {
        output.PostContent.AppendHtml(antiforgeryTag);
    }
}

Si vous vérifiez le code HTML de la page de connexion, vous verrez l'entrée cachée suivante à l'intérieur du formulaire:

<input name="__RequestVerificationToken" type="hidden" value="CfDJ8BIeHClDdT9...">

Vous pouvez également l'activer/le désactiver manuellement en ajoutant le asp-antiforgery attribut:

<form asp-controller="Account" asp-action="Register" asp-antiforgery="false" method="post" class="form-horizontal" role="form">
42
Daniel J.G.