使用Asp.Net Web API AuthorizeAttribute时回复404

时间:2015-02-12 12:36:55

标签: c# asp.net authorization asp.net-web-api

当匿名用户尝试访问仅对已识别用户有意义的资源(/ preferences)时,我想返回HTTP状态404(NotFound)。

在我的控制器/方法上使用[授权]属性会自动为匿名用户返回401(未授权),但在方法内处理授权听起来不太好。有什么想法吗?

编辑:我正在使用Asp.Net Web API 2和Authorize属性来保护资源。

人们徘徊的相关资源为什么我会返回404:

2 个答案:

答案 0 :(得分:0)

让你的web api方法返回一个HttpResponseMessage,并将其配置为返回404.我确定你可以轻松地将其转换为c#:

return Me.Request.CreateResponse(HttpStatusCode.NotFound, "Your message here.")

答案 1 :(得分:0)

我认为这里的问题是401在技术上是正确的代码,只要端点需要授权用户并且用户进行呼叫是匿名的。毕竟,匿名用户未获得授权。他们怎么可能?您无法授权匿名用户。

因此标准代码提供的行为是正确的,您只是想因某些原因做一些不同的事情。从长远来看,重新定义HTTP状态代码仅适用于您的应用程序可能是一个坏主意。例如,您的应用程序的客户端如何区分身份验证问题和资源识别问题?两者都没有找到。

如果我听起来像是责骂,我道歉,这不是我的意图。 : - )