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

ASP.NET Core MVC中[ValidateAntiForgeryToken]未触发问题求助

解决[ValidateAntiForgeryToken]验证不生效的问题

问题根源分析

你的代码存在两个关键问题导致验证未触发:

  1. 配置与提交方式不匹配:你设置了options.HeaderName = "XSRF-TOKEN",这会让防伪系统只检查请求头中的令牌值,但传统HTML表单提交默认是通过表单字段(而非请求头)传递令牌的。注释掉@Html.AntiForgeryToken()后,请求既无表单字段令牌,也无对应请求头令牌,却未触发验证,核心原因是配置偏离了传统表单的验证逻辑。
  2. 中间件顺序错误:UseAntiforgery的位置不正确,它需要放在UseRouting之后、UseAuthorization之前,否则无法绑定路由上下文完成验证流程。

修复步骤

1. 调整Antiforgery配置(适配传统表单提交)

如果使用传统HTML表单提交,无需设置HeaderName,保留默认配置即可(默认检查表单字段__RequestVerificationToken):

builder.Services.AddAntiforgery(); // 移除HeaderName相关配置

若后续需要兼容AJAX请求,可再添加HeaderName配置,但需确保请求时同时携带对应请求头和令牌值。

2. 修正中间件顺序

将UseAntiforgery移至UseRouting之后、UseAuthorization之前:

var app = builder.Build();

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAntiforgery(); // 调整到此处
app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

3. 验证修复效果

  • 若要正常通过验证,取消注释表单中的@Html.AntiForgeryToken():
<form asp-action="SubmitForm" asp-controller="Home" method="post">
    @Html.AntiForgeryToken()
    <button type="submit">Submit</button>
</form>
  • 若要测试无令牌触发错误的场景,保持注释@Html.AntiForgeryToken(),此时提交表单会直接返回400 Bad Request(注意:防伪验证失败不会将错误写入ModelState,而是提前终止请求,需通过浏览器开发者工具查看请求状态码确认)。

补充说明

如果确实需要通过请求头传递令牌(如AJAX场景),需在提交时手动将令牌值添加到XSRF-TOKEN请求头中,示例如下:

<form asp-action="SubmitForm" asp-controller="Home" method="post" id="myForm">
    @Html.AntiForgeryToken()
    <button type="submit">Submit</button>
</form>

<script>
document.getElementById('myForm').addEventListener('submit', function(e) {
    e.preventDefault();
    const token = document.querySelector('input[name="__RequestVerificationToken"]').value;
    fetch(this.action, {
        method: 'POST',
        headers: {
            'XSRF-TOKEN': token,
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        body: new FormData(this)
    });
});
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:52:18