NSwag для Asp.Net Web Api 2 показывает безопасность в графическом интерфейсе
Мы установили nswag в наш проект, и пока он работает нормально.
Но все наши функции защищены с помощью API-ключа.
когда я смотрю на демонстрационную страницу от Swagger, я вижу блокировку в конце каждого вызова API, где мне нужно авторизоваться (я думаю, это блокировка для)
В нашей локальной установке мы получили кнопку "Авторизовать", и мы можем установить ключ, но я не знаю, как активировать знак блокировки в вызовах 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
})
);
});