2015-06-20 22 views
15

È richiesto ancora @Html.AntiForgeryToken() in ASP.NET .NET4.6 vNext?Html.AntiForgeryToken() ancora richiesto?

La forma decorazioni hanno cambiato per

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

Da questo

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

E includere più questo

@Html.AntiForgeryToken() 

Le azioni di controllo sono ancora contrassegnate con l'attributo ValidateAntiForgeryToken come previsto comunque, da dove viene esattamente? Automaticamente?

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

risposta

32

La forma tag aiutante aggiungerà automaticamente l'anti Token contraffazione. (A meno che non lo si utilizzi come elemento modulo standard html, aggiungendo manualmente un attributo action). Controllare il codice sorgente di form tag helper, vedrete quanto segue alla fine del metodo Process.

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

Se si controlla il codice HTML della pagina di login, si vedrà il seguente input nascosto all'interno del modulo:

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

È inoltre possibile abilitare manualmente/disattivarlo aggiungendo l'attributo asp-antiforgery:

<form asp-controller="Account" asp-action="Register" asp-antiforgery="false" method="post" class="form-horizontal" role="form"> 
+4

A partire da MVC 6, Asp.net 5 RC1 il Tag Helper è "asp-antiforgery" non "asp-anti-contraffazione" non è sicuro se fosse già così o cambiato.
'

' –

Problemi correlati