首页 文章

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

提问于
浏览
0

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

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

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

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

2 回答

  • 0

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

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

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

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

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

相关问题