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