J'ai un site Webapi MVC qui utilise l'authentification OAuth / jeton pour authentifier les demandes. Tous les contrôleurs concernés ont les bons attributs et l'authentification fonctionne correctement.
Le problème est que toute la demande ne peut pas être autorisée dans la portée d'un attribut - certaines vérifications d'autorisation doivent être effectuées dans un code appelé par les méthodes du contrôleur - quelle est la bonne façon de renvoyer une réponse 401 non autorisée dans ce cas?
J'ai essayé throw new HttpException(401, "Unauthorized access");
, mais quand je fais cela, le code d'état de réponse est 500 et j'obtiens également une trace de pile. Même dans notre journalisation DelegatingHandler, nous pouvons voir que la réponse est 500, pas 401.
HttpResponseException
par rapport au moment de renvoyer unUnauthorized()
. Utiliser l'exception pour une erreur «attendue» est un peu un anti-modèle, donc s'il y a des cas où vous vous attendez à ce que l'appel fasse cette erreur, le retourUnauthorized()
est probablement le bon appel. ÉconomisezHttpResponseException
pour le vraiment inattendu.