Eu tenho um site MVC webapi que usa autenticação OAuth / token para autenticar solicitações. Todos os controladores relevantes têm os atributos corretos e a autenticação está funcionando bem.
O problema é que nem todas as solicitações podem ser autorizadas no escopo de um atributo - algumas verificações de autorização devem ser realizadas no código que é chamado pelos métodos do controlador - qual é a maneira correta de retornar uma resposta 401 não autorizada neste caso?
Eu tentei throw new HttpException(401, "Unauthorized access");
, mas quando faço isso, o código de status de resposta é 500 e também consigo um rastreamento de pilha. Mesmo em nosso registro DelegatingHandler, podemos ver que a resposta é 500, não 401.
HttpResponseException
versus quando retornar umUnauthorized()
. Usar a exceção para um erro 'esperado' é um pouco antipadrão, portanto, se houver casos em que você espera que a chamada cometa esse erro, retornarUnauthorized()
é provavelmente a chamada certa. EconomizeHttpResponseException
para o verdadeiramente inesperado.