У мене є веб-сайт MVC, який використовує автентифікацію OAuth / маркер для автентифікації запитів. Усі відповідні контролери мають правильні атрибути, і автентифікація працює нормально.
Проблема полягає в тому, що не всі запити можуть бути авторизовані в межах атрибута - деякі перевірки авторизації повинні виконуватися в коді, який викликається методами контролера - який правильний спосіб повернути несанкціоновану відповідь 401 у цьому випадку?
Я намагався throw new HttpException(401, "Unauthorized access");
, але коли я це роблю, код стану відповіді становить 500, і я також отримую трасування стека. Навіть у нашому журналі DelegatingHandler ми бачимо, що відповідь 500, а не 401.
HttpResponseException
проти, а коли повернутиUnauthorized()
. Використання винятку для "очікуваної" помилки є трохи анти-шаблоном, тому, якщо є випадки, коли ви очікуєте, що дзвінок зробить цю помилку, поверненняUnauthorized()
- це, мабуть, правильний виклик. ЗбережітьHttpResponseException
для справді несподіваного.