Tengo un sitio web MVC que usa autenticación OAuth / token para autenticar solicitudes. Todos los controladores relevantes tienen los atributos correctos y la autenticación funciona correctamente.
El problema es que no todas las solicitudes se pueden autorizar en el alcance de un atributo; algunas verificaciones de autorización deben realizarse en el código al que llaman los métodos del controlador; ¿cuál es la forma correcta de devolver una respuesta 401 no autorizada en este caso?
Lo he intentado throw new HttpException(401, "Unauthorized access");
, pero cuando hago esto, el código de estado de respuesta es 500 y también obtengo un seguimiento de la pila. Incluso en nuestro DelegatingHandler de registro podemos ver que la respuesta es 500, no 401.
HttpResponseException
versus cuándo devolver unUnauthorized()
. Usar la excepción para un error 'esperado' es un poco antipatrón, por lo que si hay casos en los que espera que la llamada cometa este error, regresarUnauthorized()
es probablemente la llamada correcta. AhorreHttpResponseException
para lo verdaderamente inesperado.