我有一个MVC webapi网站,该网站使用OAuth /令牌身份验证对请求进行身份验证。所有相关的控制器都具有正确的属性,并且身份验证正常。
问题在于,并非所有请求都可以在属性范围内得到授权-必须在控制器方法调用的代码中执行某些授权检查-在这种情况下,返回401未经授权的响应的正确方法是什么?
我已经尝试过了throw new HttpException(401, "Unauthorized access");
,但是当我这样做时,响应状态代码是500,我也得到了堆栈跟踪。即使在日志记录DelegatingHandler中,我们也可以看到响应为500,而不是401。
HttpResponseException
vs以及何时返回Unauthorized()
。将异常用于“预期的”错误有点反模式,因此,如果在某些情况下您希望调用会导致此错误,则返回Unauthorized()
可能是正确的调用。节省HttpResponseException
真正的意外。