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