首页 > 解决方案 > 如何在 Razor Pages 中禁用 CSRF 防伪

问题描述

当我在 TestServer 下运行时,我想禁用 CSRF 检查,这样我就不必在运行自动化测试时读取和发送令牌。

由于大量“有用的魔法”潜入 ASP.NET Core,我被困住了。

模板代码中没有明显添加此内容的任何内容,但在此services.AddMvc(options => options.Filters)调用期间查看调试器中的过滤器显示没有全局过滤器。

此代码也不起作用。

mvcOptions.Filters.Add<IgnoreAntiforgeryTokenAttribute>(0);

并且Antiforgery.Options没有禁用选项。

我怎样才能做到这一点?

标签: asp.net-core

解决方案


试试这个:

services.AddMvc().AddRazorPagesOptions(o =>
{
    o.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
});

您也可以在 PageModel 中忽略它:

[IgnoreAntiforgeryToken(Order = 1001)]
public class IndexModel : PageModel

关于 Order 参数:内置 [ValidateAntiforgeryToken] 装饰器的顺序为 1000,因此将 [IgnoreAntiforgeryToken] 设置为 1001 将覆盖它。


推荐阅读