gpt4 book ai didi

c# - 为什么按类型添加 AutoValidateAntiForgeryTokenAttribute 不起作用?

转载 作者:太空狗 更新时间:2023-10-29 23:36:13 27 4
gpt4 key购买 nike

在 ASP.NET Core 中,您可以通过在 Startup.cs 中包含此行来验证所有非 GET 请求( docs ):

services.AddMvc(options => options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute()));

但是,如果您按类型添加过滤器(使用 typeof 或通用 Add<T> 方法),验证似乎不起作用:

// Doesn't work
services.AddMvc(options => options.Filters.Add(typeof(AutoValidateAntiforgeryTokenAttribute));
// Doesn't work either
services.AddMvc(options => options.Filters.Add<AutoValidateAntiforgeryTokenAttribute>());

参见 https://github.com/davidgruar/GlobalFilterDemo进行最小的复制。

这是怎么回事?

最佳答案

您需要向 DI 容器注册类型。我刚刚尝试过,它有效。

public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(options =>
{
// This works
//options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());

// These variants don't work
//options.Filters.Add<AutoValidateAntiforgeryTokenAttribute>();
options.Filters.Add(typeof(AutoValidateAntiforgeryTokenAttribute));
});

services.AddScoped<AutoValidateAntiforgeryTokenAttribute>();
}

关于c# - 为什么按类型添加 AutoValidateAntiForgeryTokenAttribute 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49775349/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com