C# 如何从AuthorizationHandler正确返回404以防止信息泄露

C# 如何从AuthorizationHandler正确返回404以防止信息泄露,c#,asp.net-core,C#,Asp.net Core,我正在编写一个授权处理程序来删除控制器中的大量样板代码 我想确保我做的是正确的,因为在一个需求实际失败的时候,对它调用“成功”似乎有点奇怪。注意下面代码中的行/->参见上面的解释 重要的是,如果您没有访问ABN的权限,我们不会披露存储在我们系统中的ABN,而您无法在您有权访问但没有所需权限级别的ABN上执行操作 所有我为需求找到的例子似乎都认为你可以或不能执行某个动作。 这个问题是关于我想要使用的状态码,但我不知道如何正确地使用AspnetCore实现 最后,如果我只是设置了状态码,但是上下文

我正在编写一个授权处理程序来删除控制器中的大量样板代码

我想确保我做的是正确的,因为在一个需求实际失败的时候,对它调用“成功”似乎有点奇怪。注意下面代码中的行
/->参见上面的解释

重要的是,如果您没有访问ABN的权限,我们不会披露存储在我们系统中的ABN,而您无法在您有权访问但没有所需权限级别的ABN上执行操作

所有我为需求找到的例子似乎都认为你可以或不能执行某个动作。 这个问题是关于我想要使用的状态码,但我不知道如何正确地使用AspnetCore实现

最后,如果我只是设置了状态码,但是上下文失败了,那么就交付了403

if (accessLevel == EntityAccessLevel.None)
{
    authorizationFilterContext.HttpContext.Response.StatusCode = StatusCodes.Status404NotFound;
    using(var sw = new StreamWriter(authorizationFilterContext.HttpContext.Response.Body))
    {
        sw.Write(NoData);
    }
    context.Fail();
}
if (accessLevel == EntityAccessLevel.None)
{
    authorizationFilterContext.HttpContext.Response.StatusCode = StatusCodes.Status404NotFound;
    context.Fail();
}

如果有一个更好的例子,我想知道

IMO,我更喜欢从代码返回404和的最后一种方法,最好用
context.Fail()来理解。我同意,但403仍在发送中。此帖子对于此问题很有用,请查看:
if (accessLevel == EntityAccessLevel.None)
{
    authorizationFilterContext.HttpContext.Response.StatusCode = StatusCodes.Status404NotFound;
    context.Fail();
}