asp.net-core - 如何在 Razor Pages 中禁用 CSRF 防伪
问题描述
当我在 TestServer 下运行时,我想禁用 CSRF 检查,这样我就不必在运行自动化测试时读取和发送令牌。
由于大量“有用的魔法”潜入 ASP.NET Core,我被困住了。
模板代码中没有明显添加此内容的任何内容,但在此services.AddMvc(options => options.Filters)
调用期间查看调试器中的过滤器显示没有全局过滤器。
此代码也不起作用。
mvcOptions.Filters.Add<IgnoreAntiforgeryTokenAttribute>(0);
并且Antiforgery.Options
没有禁用选项。
我怎样才能做到这一点?
解决方案
试试这个:
services.AddMvc().AddRazorPagesOptions(o =>
{
o.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
});
您也可以在 PageModel 中忽略它:
[IgnoreAntiforgeryToken(Order = 1001)]
public class IndexModel : PageModel
关于 Order 参数:内置 [ValidateAntiforgeryToken] 装饰器的顺序为 1000,因此将 [IgnoreAntiforgeryToken] 设置为 1001 将覆盖它。
推荐阅读
- r - tidyverse 过滤中的“For”循环
- c++ - C++哪里写一个类的函数?
- mysql - 如何在 AWS Aurora RDS 中安排或触发 SQL 过程?
- python - 将python2的版本更改为python3时出现问题
- json - SWIFT 5 中的嵌套 JSON
- docker - 如何将多阶段 docker 映射到多个 Jenkins 阶段
- c# - 如何让 RestSharp 不将 oauth_callback 参数添加到 Authentication 标头
- c# - 异步 Active Directory 查询
- spring - 将@Service/@Component 与@Bean 放在一起是不是很糟糕?
- android - Android从第二个微调器中的第一个微调器获取所选项目,反之亦然