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
})
);
});
我们已经在我们的项目中安装了 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
})
);
});