如何在 Razor Pages 中禁用 CSRF 防伪

Luk*_*ett 5 asp.net-core

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

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

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

这段代码也不起作用。

mvcOptions.Filters.Add<IgnoreAntiforgeryTokenAttribute>(0);
Run Code Online (Sandbox Code Playgroud)

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

我怎样才能做到这一点?

Don*_*nal 8

尝试这个:

services.AddMvc().AddRazorPagesOptions(o =>
{
    o.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
});
Run Code Online (Sandbox Code Playgroud)

您也可以在 PageModel 中忽略它:

[IgnoreAntiforgeryToken(Order = 1001)]
public class IndexModel : PageModel
Run Code Online (Sandbox Code Playgroud)

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