38 lines
1.3 KiB
C#
38 lines
1.3 KiB
C#
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<string, IOpenApiSecurityScheme>();
|
|
document.Components.SecuritySchemes[JwtBearerDefaults.AuthenticationScheme] = bearerOpenApiSecurityScheme;
|
|
|
|
var securityRequirement = new OpenApiSecurityRequirement
|
|
{
|
|
{
|
|
new OpenApiSecuritySchemeReference(JwtBearerDefaults.AuthenticationScheme),
|
|
new List<string>()
|
|
}
|
|
};
|
|
|
|
document.Security ??= [];
|
|
document.Security.Add(securityRequirement);
|
|
|
|
return Task.CompletedTask;
|
|
}
|
|
}
|