我想在TestServer下运行时禁用CSRF检查,因此在运行自动化测试时不必读取和发送令牌。
由于大量“有用的魔术”逐渐渗透到ASP.NET Core中,我被困住了。
模板代码中显然没有添加任何内容,但是在此services.AddMvc(options => options.Filters)
调用期间查看调试器中的过滤器,则没有显示全局过滤器。
此代码也不起作用。
mvcOptions.Filters.Add<IgnoreAntiforgeryTokenAttribute>(0);
并且Antiforgery.Options
没有禁用选项。
我该怎么做?
答案 0 :(得分:1)
尝试一下:
services.AddMvc().AddRazorPagesOptions(o =>
{
o.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
});
您也可以在PageModel上忽略它:
[IgnoreAntiforgeryToken(Order = 1001)]
public class IndexModel : PageModel
关于Order参数:内置的[ValidateAntiforgeryToken] 装饰器的订单数为1000,因此设置 [IgnoreAntiforgeryToken]设置为1001将覆盖它。