我想在 TestServer 下运行时禁用 CSRF 检查,这样我就不必在运行自动化测试时读取和发送令牌。
由于 ASP.NET Core 中潜入了大量“有用的魔法”,我陷入了困境。
模板代码中没有任何内容明显添加了此内容,但在此services.AddMvc(options => options.Filters)调用期间查看调试器中的过滤器显示没有全局过滤器。
这段代码也不起作用。
mvcOptions.Filters.Add<IgnoreAntiforgeryTokenAttribute>(0);
Run Code Online (Sandbox Code Playgroud)
并且Antiforgery.Options没有禁用选项。
我怎样才能做到这一点?
尝试这个:
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 将覆盖它。
| 归档时间: |
|
| 查看次数: |
2106 次 |
| 最近记录: |