0

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

但是我们所有的功能都使用 api-key 进行保护。

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

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

在此处输入图像描述

在我们的本地安装中,我们获得了“授权”按钮,我们可以设置密钥,但我不知道如何在 api 调用中激活锁定登录?有我需要设置的属性吗?

4

2 回答 2

1

生成器设置已被弃用,当您使用 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
        })
    );
});
于 2019-02-14T16:49:32.210 回答
1

解决方案是仅使用此选项为 ApiKey 设置 GeneratorSettings.OperationProcessors 。在 Application_Start 中的 global.asax 中。

  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"));
            });
于 2019-01-24T11:56:20.917 回答