NSwag for Asp.Net Web Api 2 在 swagger gui 中显示安全性

NSwag for Asp.Net Web Api 2 show security in swagger gui

我们已经在我们的项目中安装了 nswag,到目前为止它运行良好。

但是我们所有的功能都受到 api 密钥的保护。

当我从 swagger 查看演示页面时,我可以在每个 api 调用的末尾看到我需要授权的锁(我认为这就是锁)

https://petstore.swagger.io/#/

在我们的本地安装中,我们得到了 "Authorize" 按钮,我们可以设置密钥,但我不知道如何在 api 电话中激活锁定登录?我需要设置属性吗?

解决方案是仅使用此选项为 ApiKey 设置 GeneratorSettings.OperationProcessors。在我的 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#enable-api-key-authorization

services.AddOpenApiDocument(document => 
{
    document.DocumentProcessors.Add(
        new SecurityDefinitionAppender("apikey", new SwaggerSecurityScheme
        {
            Type = SwaggerSecuritySchemeType.ApiKey,
            Name = "api_key",
            In = SwaggerSecurityApiKeyLocation.Header
        })
    );
});