.NET Core Web API、JWT 和 Swagger - 401 显示为 Undocumented 而不是 Unauthorized

Joe*_*oeD 5 jwt swagger swashbuckle asp.net-core asp.net-core-webapi

我有一个 ASP.NET Core Web API 3 应用程序,它实现了 REST API 并使用 JWT 不记名令牌进行授权,以及 Swagger (Swashbuckle)。

我的控制器上有 [Authorize] 过滤器,例如:

[ApiController]
[Route("api/[controller]")]
[Authorize]
public class MyController : ControllerBase
{
}
Run Code Online (Sandbox Code Playgroud)

Swagger 与我的 API 配合使用,我可以生成 JWT 令牌并将其提供给 Swagger,并且一切正常。

但是,如果我尝试使用 Swagger 在没有 JWT 令牌或无效 JWT 令牌的情况下访问我的 REST 端点之一,Swagger UI 会显示错误 401 Undocumented,但我在网上看到的所有示例都表明我应该得到 401未经授权

(当我使用 Postman 访问相同的 URL 时,它确实显示 401 Unauthorized。)

在我开始撕掉东西之前,有什么想法为什么我可能会得到 Undocumented 而不是 Unauthorized?

这是我看到的:

在此处输入图片说明

当我添加下面建议的属性时

 (ProducesResponseType(typeof(ProblemDetails), (int)HttpStatusCode.Unauthorized)])
Run Code Online (Sandbox Code Playgroud)

我看到这个:

在此处输入图片说明

小智 6

您可以在 Startup.cs 中添加 app.UseStatusCodePages()。

然后这将返回一个响应正文响应体


Anu*_*iti 2

您能否尝试在操作方法中使用以下属性,

 [ProducesResponseType(typeof(ProblemDetails), (int)HttpStatusCode.Unauthorized)] 
Run Code Online (Sandbox Code Playgroud)