В моем проекте WebAPI я использую Owin.Security.OAuth
, чтобы добавить проверку подлинности JWT.
Внутри GrantResourceOwnerCredentials
моего OAuthProvider я устанавливаю ошибки, используя следующую строку:
context.SetError("invalid_grant", "Account locked.");
это возвращается клиенту как:
{
"error": "invalid_grant",
"error_description": "Account locked."
}
после того, как пользователь получит аутентификацию, и он пытается выполнить "обычный" запрос на один из моих контроллеров, он получает ниже ответа, когда модель недействительна (с использованием FluentValidation):
{
"message": "The request is invalid.",
"modelState": {
"client.Email": [
"Email is not valid."
],
"client.Password": [
"Password is required."
]
}
}
Оба запроса возвращают 400 Bad Request
, но иногда вы должны искать поле error_description
, а иногда и для message
Мой вопрос: возможно ли заменить message
на error
в ответ, который возвращается ModelValidatorProviders
и в других местах?
Я читал о ExceptionFilterAttribute
, но я не знаю, хорошо ли это для начала. FluentValidation не должно быть проблемой, потому что все, что он делает, заключается в добавлении ошибок в ModelState
.
EDIT:
Следующее, что я пытаюсь исправить, - это несогласованное соглашение об именах в возвращаемых данных через WebApi - при возврате ошибки из OAuthProvider
у нас есть error_details
, но при возврате BadRequest
с ModelState
(из ApiController
) мы имеем ModelState
. Как вы видите, сначала использует snake_case
и второй camelCase
.