Ho un sito webapi MVC che utilizza l'autenticazione OAuth / token per autenticare le richieste. Tutti i controller rilevanti hanno gli attributi giusti e l'autenticazione funziona correttamente.
Il problema è che non tutte le richieste possono essere autorizzate nell'ambito di un attributo - alcuni controlli di autorizzazione devono essere eseguiti nel codice chiamato dai metodi del controller - qual è il modo corretto per restituire una risposta 401 non autorizzata in questo caso?
Ho provato throw new HttpException(401, "Unauthorized access");
, ma quando lo faccio il codice di stato della risposta è 500 e ottengo anche una traccia dello stack. Anche nella nostra registrazione DelegatingHandler possiamo vedere che la risposta è 500, non 401.
HttpResponseException
contro quando restituire unUnauthorized()
. Usare l'eccezione per un errore "atteso" è un po 'un anti-pattern, quindi se ci sono casi in cui ti aspetti che la chiamata commetta questo errore, la restituzioneUnauthorized()
è probabilmente la chiamata giusta. TranneHttpResponseException
per ciò che è veramente inaspettato.