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();
}