Tôi đang phát triển một số Api Web với .Net core 3.0 và muốn tích hợp nó với SwashBuckle.Swagger. Nó hoạt động tốt, nhưng khi tôi thêm xác thực JWT, nó không hoạt động như tôi mong đợi. Để làm điều đó, tôi đã thêm mã dưới đây:
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
});
});
Sau khi thêm AddSecurityDefinition
chức năng, tôi có thể thấy nút Ủy quyền và khi tôi nhấp vào nó, tôi thấy biểu mẫu bên dưới:
Sau đó, tôi gõ Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
, Sau khi thực hiện, tôi hy vọng sẽ thấy authorization: Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
trong tiêu đề của yêu cầu, khi tôi gửi yêu cầu tới Api Web từ Swagger. Nhưng ủy quyền không được thêm vào tiêu đề yêu cầu. Tôi đang sử dụng SwashBuckle.Swagger (5.0.0-rc3). Xin lưu ý rằng có nhiều mẫu hoạt động tốt trên .net core 2.0, nhưng các chức năng vênh của Swashbuckle đã thay đổi trên phiên bản mới nhất để tôi không thể sử dụng các mẫu đó.
.AddSecurityRequirement
(toàn cầu) hoặc .Security
(ở cấp độ hoạt động) - như được giải thích trong các câu trả lời cho câu hỏi được liên kết. AddSecurityDefinition
Một mình là không đủ.