我们已经在我们的项目中安装了 nswag,到目前为止它运行良好。
但是我们所有的功能都使用 api-key 进行保护。
当我从 swagger 中查看演示页面时,我可以看到锁在我需要授权的每个 api 调用的末尾(我认为这就是锁)
https://petstore.swagger.io/#/
在我们的本地安装中,我们获得了“授权”按钮,我们可以设置密钥,但我不知道如何在 api 调用中激活锁定登录?有我需要设置的属性吗?
我们已经在我们的项目中安装了 nswag,到目前为止它运行良好。
但是我们所有的功能都使用 api-key 进行保护。
当我从 swagger 中查看演示页面时,我可以看到锁在我需要授权的每个 api 调用的末尾(我认为这就是锁)
https://petstore.swagger.io/#/
在我们的本地安装中,我们获得了“授权”按钮,我们可以设置密钥,但我不知道如何在 api 调用中激活锁定登录?有我需要设置的属性吗?
生成器设置已被弃用,当您使用 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
})
);
});
解决方案是仅使用此选项为 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"));
});