首页 > 解决方案 > 全局应用的 IgnoreAntiForgeryTokenAttribute 不会禁用 ValidateAntiForgeryToken

问题描述

我有一个具有这些属性的端点:

[HttpPost]
[ValidateAntiForgeryToken]
[Route("[controller]/[action]")]

当我IgnoreAntiforgeryTokenAttribute在全球申请时

.AddMvc(opts =>
{
    opts.Filters.Add(typeof(CustomExceptionFilter));
    opts.Filters.Add(new IgnoreAntiforgeryTokenAttribute());
    // or
    opts.Filters.Add(typeof(IgnoreAntiforgeryTokenAttribute));
})

它没有禁用 that [ValidateAntiForgeryToken],但是当我这样做时:

[HttpPost]
[ValidateAntiForgeryToken]
[IgnoreAntiforgeryToken]
[Route("[controller]/[action]")]

然后它被禁用了,为什么?

标签: c#asp.net-core.net-coreasp.net-core-mvc

解决方案


尝试在列表顶部插入过滤器,使其优先于现有过滤器,例如AutoValidateAntiforgeryTokenAttribute

opts.Filters.Insert(0, new IgnoreAntiforgeryTokenAttribute());

推荐阅读