You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET8中未加@Html.AntiForgeryToken却通过防伪验证的原因

为什么未手动添加@Html.AntiForgeryToken()的表单仍能通过[ValidateAntiForgeryToken]验证?

你的情况核心原因是ASP.NET Core(包括.NET8)的表单Tag Helper会自动为带有asp-controller/asp-action属性的表单注入防伪令牌,不需要手动调用@Html.AntiForgeryToken()。

具体细节:

  • 当你使用<form asp-controller="Home" asp-action="BackForm">这类Tag Helper生成表单时,框架会自动在表单内部插入一个隐藏的__RequestVerificationToken输入字段,你可以通过查看页面的HTML源码确认这一点。
  • 配合data-ajax="true"的jQuery Unobtrusive Ajax提交请求时,脚本会自动收集这个隐藏令牌并随POST请求一起发送到后端,所以[ValidateAntiForgeryToken]属性能正常通过验证,Action可以顺利执行且ModelState保持有效。

额外说明:
只有当你使用纯HTML表单(未借助ASP.NET Core的表单Tag Helper)时,才需要手动添加@Html.AntiForgeryToken()来确保防伪验证生效,否则框架会自动完成令牌的注入与提交逻辑。

内容的提问来源于stack exchange,提问作者BigMan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 05:33:21