gpt4 book ai didi

authentication - 即使使用 AuthorizeFilter,Asp.Net Core MVC 中间件也返回 404 而不是 401

转载 作者:行者123 更新时间:2023-12-05 07:17:54 25 4
gpt4 key购买 nike

我有一个非常简单的 Web API 应用程序,其配置如下:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseAuthentication();
app.UseMvc();
}

服务有这样的 MVC 注册:

_services
.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
})

没有为 root 注册的默认路由,所以当我向应用程序的 root 发出请求时,我得到 404。我期望得到的是 401,因为我认为绝对所有请求都应该需要授权。

我还没有想出一种方法来实现这一点,甚至不确定这在语义上是否正确,但我的 API 中没有开放端点,如果没有任何路由的身份验证,我只想返回 401。

最佳答案

ASP.NET 内部使用 401,你总是会得到 404,你可以使用

AddAuthentification() 服务收集器中的扩展

   services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
}).AddCookie("Cookies",
(options) =>
{
options.AccessDeniedPath = "..your access denied page route..";
options.LoginPath ="..your login route.."
})

关于authentication - 即使使用 AuthorizeFilter,Asp.Net Core MVC 中间件也返回 404 而不是 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58608536/

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