Я розробляю веб-версію Api з .Net core 3.0 і хочу інтегрувати його з 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. Але авторизація не додається до заголовка запиту. Я використовую SwashBuckle.Swagger (5.0.0-rc3). Зверніть увагу: є багато зразків, які добре працюють на .net core 2.0, але функції Swashbuckle swagger змінилися в останній версії, тому я не можу використовувати ці зразки.
.AddSecurityRequirement
(глобально) або .Security
(на рівні операції) - як пояснено у відповідях на пов'язане питання. AddSecurityDefinition
одних недостатньо.