【发布时间】:2021-03-26 21:45:26
【问题描述】:
我有一个 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 在没有 JWT 令牌或无效 JWT 令牌的情况下访问我的 REST 端点之一,Swagger UI 将显示错误 401 未记录,但我看到的所有示例在网络上显示我应该得到 401 Unauthorized。
(当我使用 Postman 访问相同的 URL 时,它确实显示 401 Unauthorized。)
在我开始扯掉一些东西之前,有什么想法为什么我可能会得到无证而不是未经授权?
这是我看到的:
当我添加下面建议的属性时
(ProducesResponseType(typeof(ProblemDetails), (int)HttpStatusCode.Unauthorized)])
我看到了:
【问题讨论】:
-
看起来它的工作方式与预期完全一致...如果您对项目有任何疑问,请在此处报告:github.com/swagger-api/swagger-ui/issues/new/choose
-
你解决了这个问题吗?我现在有同样的问题
-
@HelderSepulveda 工作正常,是的,但在 Details 列中,Error: 应该显示“未授权”。这是 JoeD 报告的缺失行为的图像:link
-
我也有同样的问题。在我的一个 API 中,它只打印“错误:”,就像您的一样,在另一个 API 中,它打印“错误:未经授权”。我希望他们都打印“错误:未经授权”。我有 operation.Responses.Add("401", new OpenApiResponse { Description = "Unauthorized" });在 IOperationFilter 但更改或删除描述无济于事。
标签: asp.net-core jwt swagger asp.net-core-webapi swashbuckle