using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.OpenApi; using Microsoft.OpenApi; namespace StopShopping.Api.Extensions; // 来自网络。。。 public class BearerOpenApiDocumentTransformer : IOpenApiDocumentTransformer { public Task TransformAsync(OpenApiDocument document, OpenApiDocumentTransformerContext context, CancellationToken cancellationToken) { var bearerOpenApiSecurityScheme = new OpenApiSecurityScheme { In = ParameterLocation.Header, Scheme = JwtBearerDefaults.AuthenticationScheme, Type = SecuritySchemeType.Http, Description = "jwt" }; document.Components ??= new OpenApiComponents(); document.Components.SecuritySchemes ??= new Dictionary(); document.Components.SecuritySchemes[JwtBearerDefaults.AuthenticationScheme] = bearerOpenApiSecurityScheme; var securityRequirement = new OpenApiSecurityRequirement { { new OpenApiSecuritySchemeReference(JwtBearerDefaults.AuthenticationScheme), new List() } }; document.Security ??= []; document.Security.Add(securityRequirement); return Task.CompletedTask; } }