AutoValidateAntiforgeryToken 失败的全局错误处理

Global Error Handling on AutoValidateAntiforgeryToken failure

提问人:Farhad Rad 提问时间:1/24/2022 更新时间:1/24/2022 访问量:239

问:

我有这个 ASP.Net 核心 Web 应用程序。我在 中配置了一些自定义错误处理程序。在这里你可以看到:Startup.cs

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseWhen(context => context.Request.Path.StartsWithSegments("/api"), app =>
    {
        app.UseStatusCodePagesWithReExecute("/api/error-{0}");
    });

    app.UseWhen(context => !context.Request.Path.StartsWithSegments("/api"), app =>
    {
        app.UseStatusCodePagesWithRedirects("/error-{0}");
    });

    //...
}

然后有一个控制器,它上面有。[AutoValidateAntiforgeryToken]

问题是,当 valdation 失败时,请求得到状态代码 400 的响应,而我的自定义错误处理程序不起作用。如果我发送正确的或只是删除属性,那么自定义错误处理程序就可以正常工作。AntiForgeryTokenAntiForgeryToken[AutoValidateAntiforgeryToken]

有没有办法使用全局错误处理程序使失败结果?[AutoValidateAntiforgeryToken]

C# ASP.NET-MVC ASP.NET-CORE 错误处理 防伪令牌

评论


答:

1赞 Farhad Rad 1/24/2022 #1

#SOLVED出现此问题的原因是自定义错误处理程序本身的操作位于同一控制器内;因此,错误处理程序操作方法本身需要 ant-forgery 令牌!通过添加上述错误处理程序操作方法解决。[IgnoreAntiForgeryToken]