首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当用户未通过身份验证时,ASP.NET Core5Web API返回404代码,而不是401

当用户未通过身份验证时,ASP.NET Core 5 Web API返回404代码,而不是401代码。这是因为ASP.NET Core 5 Web API默认情况下使用了身份验证中间件,该中间件会将未经身份验证的请求视为匿名请求,并返回404代码而不是401代码。

404代码表示资源未找到,而401代码表示未经身份验证。返回404代码可以防止潜在的安全风险,因为它不会暴露未经身份验证的资源是否存在。这种行为可以防止恶意用户通过不断尝试不同的URL来探测系统中的资源。

然而,如果你希望在用户未经身份验证时返回401代码,你可以通过自定义身份验证中间件来实现。以下是一种可能的实现方式:

代码语言:txt
复制
public class CustomAuthenticationMiddleware
{
    private readonly RequestDelegate _next;

    public CustomAuthenticationMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext context)
    {
        if (!context.User.Identity.IsAuthenticated)
        {
            context.Response.StatusCode = 401;
            return;
        }

        await _next(context);
    }
}

public static class CustomAuthenticationMiddlewareExtensions
{
    public static IApplicationBuilder UseCustomAuthentication(this IApplicationBuilder builder)
    {
        return builder.UseMiddleware<CustomAuthenticationMiddleware>();
    }
}

然后,在Startup.cs文件的Configure方法中使用自定义身份验证中间件:

代码语言:txt
复制
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // ...

    app.UseCustomAuthentication();

    // ...
}

使用自定义身份验证中间件后,未经身份验证的请求将返回401代码,而经过身份验证的请求将继续执行后续的中间件和处理程序。

请注意,以上示例只是一种实现方式,你可以根据自己的需求进行调整和扩展。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券