我正在使用.Net core 3.0开发一些Web Api,并希望将其与SwashBuckle.Swagger集成。它工作正常,但是当我添加JWT身份验证时,它无法按我预期的那样工作。为此,我添加了以下代码:
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo { Title = "My Web API", Version = "v1" });
c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey
});
});
添加AddSecurityDefinition
功能后,我可以看到“授权”按钮,当我单击它时,会看到以下表单:
然后输入Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
,完成后authorization: Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
,当我从Swagger向Web Api发送请求时,我希望在请求的标头中看到该内容。但是授权未添加到请求标头中。我正在使用SwashBuckle.Swagger(5.0.0-rc3)。请注意,有许多示例可以在.net core 2.0上正常运行,但是Swashbuckle摇摇欲坠的功能在最新版本上已更改,因此我无法使用该示例。
.AddSecurityRequirement
(全局)或.Security
(在操作级别)-如链接问题的答案中所述。AddSecurityDefinition
单靠光棍是不够的。