asp.net-core-mvc - route - select asp-for
Html.AntiForgeryToken() sigue siendo necesario? (1)
¿Se @Html.AntiForgeryToken()
aún en ASP.NET .NET4.6 vNext?
Las decoraciones de forma han cambiado a
<form asp-controller="Account"
asp-action="Login"
asp-route-returnurl="@ViewBag.ReturnUrl"
method="post"
class="form-horizontal"
role="form">
De esto
@using (Html.BeginForm("Login",
"Account",
new { ReturnUrl = ViewBag.ReturnUrl },
FormMethod.Post,
new { @class = "", role = "form" }))
Y ya no incluyo esto.
@Html.AntiForgeryToken()
Las acciones del controlador aún están marcadas con el atributo ValidateAntiForgeryToken
como se esperaba, así que, ¿de dónde viene exactamente? Automágicamente?
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
El ayudante de la etiqueta de formulario agregará automáticamente el token anti falsificación. (A menos que lo use como un elemento de formulario html estándar, agregue manualmente un atributo de action
). Verifique el código fuente del ayudante de la etiqueta de formulario , verá lo siguiente al final del método de Process
.
if (Antiforgery ?? antiforgeryDefault)
{
var antiforgeryTag = Generator.GenerateAntiforgery(ViewContext);
if (antiforgeryTag != null)
{
output.PostContent.AppendHtml(antiforgeryTag);
}
}
Si verifica el código HTML de la página de inicio de sesión, verá la siguiente entrada oculta dentro del formulario:
<input name="__RequestVerificationToken" type="hidden" value="CfDJ8BIeHClDdT9...">
También puede habilitarlo / deshabilitarlo manualmente agregando el atributo asp-antiforgery
:
<form asp-controller="Account" asp-action="Register" asp-antiforgery="false" method="post" class="form-horizontal" role="form">