NSwag для Asp.Net Web Api 2 показывает безопасность в графическом интерфейсе

Мы установили nswag в наш проект, и пока он работает нормально.

Но все наши функции защищены с помощью API-ключа.

когда я смотрю на демонстрационную страницу от Swagger, я вижу блокировку в конце каждого вызова API, где мне нужно авторизоваться (я думаю, это блокировка для)

https://petstore.swagger.io/

В нашей локальной установке мы получили кнопку "Авторизовать", и мы можем установить ключ, но я не знаю, как активировать знак блокировки в вызовах API? Нужно ли установить атрибут?

2 ответа

Решение

Решением было установить GeneratorSettings.OperationProcessors для ApiKey только с этой опцией, с которой он работал. в моем global.asax в Application_Start.

  app.UseSwaggerUi3(typeof(WebApiApplication).Assembly, settings =>
            {

                settings.MiddlewareBasePath = "/swagger";
                settings.GeneratorSettings.DocumentProcessors.Add(new SecurityDefinitionAppender("ApiKey", new SwaggerSecurityScheme
                {
                    Type = SwaggerSecuritySchemeType.ApiKey,
                    Name = "X-API-KEY",
                    In = SwaggerSecurityApiKeyLocation.Header
                }));
                settings.GeneratorSettings.OperationProcessors.Add(new OperationSecurityScopeProcessor("ApiKey"));
            });

Настройки генератора устарели, и при использовании AddOpenAPIDocument (Swagger V3+ / OpenAPI) произойдет сбой.

Вместо этого вам нужно добавить аналогичные настройки в документ. https://github.com/RSuter/NSwag/wiki/AspNetCore-Middleware

services.AddOpenApiDocument(document => 
{
    document.DocumentProcessors.Add(
        new SecurityDefinitionAppender("apikey", new SwaggerSecurityScheme
        {
            Type = SwaggerSecuritySchemeType.ApiKey,
            Name = "api_key",
            In = SwaggerSecurityApiKeyLocation.Header
        })
    );
});
Другие вопросы по тегам