gpt4 book ai didi

asp.net-core-mvc - 还需要 Html.AntiForgeryToken() 吗?

转载 作者:行者123 更新时间:2023-12-02 20:47:20 26 4
gpt4 key购买 nike

@Html.AntiForgeryToken() ASP.NET .NET4.6 vNext 中仍然需要吗?

表单装饰已更改为

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

从此

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

不再包含这个

@Html.AntiForgeryToken()

Controller 操作仍标记有 ValidateAntiForgeryToken属性正如预期的那样,那么它到底来自哪里呢?自动?

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

最佳答案

表单标签助手将自动添加防伪标记。 (除非您将其用作标准 html 表单元素,手动添加 action 属性)。查看form tag helper的源代码,您将在 Process 方法的末尾看到以下内容。

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

如果您检查登录页面的 html,您将在表单中看到以下隐藏输入:

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

您还可以添加 asp-antiforgery 属性手动启用/禁用它:

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

关于asp.net-core-mvc - 还需要 Html.AntiForgeryToken() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30959972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com