Swashbuckle.AspNetCore.SwaggerGen v5 не отправляет заголовки - PullRequest
0 голосов
/ 01 августа 2020

Пытаюсь настроить чванство, и мне нужно передать два значения заголовка. Один - это токен на предъявителя, а другой - идентификатор арендатора. По какой-то причине мне не возвращаются значения, которые я ввел в форму аутентификации.

Вот мой код, но я не уверен, правильно ли он настроен или что-то работает не так, как ожидалось от Swagger.

internal static IServiceCollection AddSwagger(this IServiceCollection collection)
{
    collection.AddSwaggerGen(options =>
    {
        options.SwaggerDoc("v1", new OpenApiInfo
        {
            Title = "Title",
            Version = "v1",
            Description = "Description v1."
        });

        options.AddSecurityDefinition("Authorization", new OpenApiSecurityScheme
        {
            Name = "Authorization",
            In = ParameterLocation.Header,
            Type = SecuritySchemeType.Http,
            Scheme = "bearer",
            BearerFormat = "JWT"
        });

        options.AddSecurityDefinition("x-client-accessId", new OpenApiSecurityScheme
        {
            Name = "x-client-accessId",
            In = ParameterLocation.Header,
            Scheme = "apiKey",
            Type = SecuritySchemeType.ApiKey
        });

        options.AddSecurityRequirement(new OpenApiSecurityRequirement
        {
            [new OpenApiSecurityScheme
            {
                Name = "Authorization",
                In = ParameterLocation.Header,
                Type = SecuritySchemeType.Http,
                Scheme = "bearer",
                BearerFormat = "JWT"
            }] = new List<string>() 
        });

        options.AddSecurityRequirement(new OpenApiSecurityRequirement
        {
            [new OpenApiSecurityScheme
            {
                Name = "x-client-accessId",
                In = ParameterLocation.Header,
                Scheme = "apiKey",
                Type = SecuritySchemeType.ApiKey
            }] = new List<string>() 
        });
    });

    return collection;
}

Метод настройки:

app.UseRouting();

app.UseStaticFiles();

app.UseAuthentication();

app.UseAuthorization();

app.UseSwagger();

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "Swagger Movies Demo V1");
    c.DisplayRequestDuration();
});

app.UseEndpoints(endpoints => { endpoints.MapDefaultControllerRoute(); });

1 Ответ

0 голосов
/ 01 августа 2020

Вам также необходимо добавить приведенный ниже код в метод Configure .

// Enable middleware to serve generated Swagger as a JSON endpoint
app.UseSwagger(c => { c.RouteTemplate = "swagger/{documentName}/swagger.json"; });

// Enable middleware to serve swagger-ui assets (HTML, JS, CSS etc.)
app.UseSwaggerUI(options =>
{
    // specifying the Swagger JSON endpoint.
    options.SwaggerEndpoint($"../swagger/{_apiVersion}/swagger.json", $"MyProject API v1");
    options.DisplayRequestDuration(); // Controls the display of the request duration (in milliseconds) for "Try it out" requests.  
});
...