. NET Core Web API, JWT и Swagger - 401 отображается как недокументированный, а не как неавторизованный. - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть ASP. NET Core Web API 3 приложение, которое реализует REST API и использует токен-носитель JWT для авторизации, и Swagger (Swashbuckle).

Мой контроллер имеет [Authorize ] отфильтруйте его, например:

[ApiController]
[Route("api/[controller]")]
[Authorize]
public class MyController : ControllerBase
{
}

Swagger работает с моим API, и я могу сгенерировать токен JWT и передать его Swagger, и все это работает хорошо.

Но если я попытаюсь используйте Swagger, чтобы поразить одну из моих конечных точек REST без токена JWT или недопустимого токена JWT. Интерфейс Swagger показывает ошибку 401 Недокументированный , но все примеры, которые я вижу в Интернете, показывают, что я должен получить 401 Несанкционированный .

(Когда я нажимаю на тот же URL-адрес с Почтальоном, он показывает 401 Несанкционированный.)

Прежде чем я начну что-то копировать, любые идеи, почему я мог бы быть недокументированным вместо несанкционированного?

Вот что я вижу:

enter image description here

Когда я добавляю атрибут, предложенный ниже

 (ProducesResponseType(typeof(ProblemDetails), (int)HttpStatusCode.Unauthorized)])

Я вижу это:

enter image description here

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Вы можете добавить app.UseStatusCodePages () в файле Startup.cs.

Затем будет возвращено тело ответа Тело ответа

0 голосов
/ 11 апреля 2020

Не могли бы вы попробовать с атрибутом ниже в методе действия,

 [ProducesResponseType(typeof(ProblemDetails), (int)HttpStatusCode.Unauthorized)] 
...