如何解决NSwag的AspNetCoreOperationSecurityScopeProcessor将所有端点标记为需要授权
我有这样的自定义授权方案:
services.AddAuthentication("ClientApp")
.AddScheme<ClientAppAuthenticationOptions,ClientAppAuthenticationHandler>("ClientApp",null);
然后我具有以下NSwag OpenAPI文档配置:
services.AddOpenApiDocument((settings,provider) =>
{
settings.DocumentName = "openapi";
settings.AddSecurity("ClientApp",Enumerable.Empty<string>(),new OpenApiSecurityScheme
{
Type = OpenApiSecuritySchemeType.ApiKey,Description = "Authentications used for client apps,such as Mmcc.Stats.TpsMonitor",Name = "X-Auth-Token",In = OpenApiSecurityApiKeyLocation.Header
});
settings.OperationProcessors.Add(
new AspNetCoreOperationSecurityScopeProcessor("ClientApp")
);
// ...
}
我已经用[AllowAnonymous]
和[Authorize(AuthenticationSchemes = "ClientApp")]
装饰了控制器中的动作,但是NSwag将我的所有端点标记为需要ReDoc UI中的ClientApp
授权,而不考虑装饰器。为什么?
解决方法
我通过将代码更改为此来解决它:
settings.DocumentProcessors.Add(
new SecurityDefinitionAppender("ClientApp",new OpenApiSecurityScheme
{
Type = OpenApiSecuritySchemeType.ApiKey,Description = "Authentications used for client apps,such as Mmcc.Stats.TpsMonitor",Name = "X-Auth-Token",In = OpenApiSecurityApiKeyLocation.Header
}));
settings.OperationProcessors.Add(new AspNetCoreOperationSecurityScopeProcessor("ClientApp"));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。