我正在使用.NET Core 3.0开发一些Web API,并希望将其与SwashBuckle.Swagger集成。 在没有JWT身份验证的情况下,它运行正常,但是当我添加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
。在完成后,我期望当我从Swagger向Web API发送请求时,在请求头中能够看到authorization: Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
,但是授权并没有添加到请求头中。我正在使用Swashbuckle.Swagger(5.0.0-rc3)。请注意,有许多示例在.NET Core 2.0上运行良好,但最新版本的Swashbuckle Swagger功能已更改,因此我无法使用这些示例。
.AddSecurityRequirement
(全局)或.Security
(操作级别)-。AddSecurityDefinition
单独是不够的。 - Helen