c# - 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 将我的所有端点标记为ClientApp
在 ReDoc UI 中要求授权,而不考虑装饰器。为什么?
解决方案
我已通过将代码更改为此来修复它:
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"));
推荐阅读
- oracle - 为什么 Alter Table 在 Java 中不能使用 executeQuery() 工作?
- python - 将具有数字和名称的列拆分为两个不同的列“ID”和“名称”
- r - 在 R 4.0 中执行 NA 替换时出错
- python - render() 在pygame中没有关键字参数错误
- spring-webflux - 当反应式存储库返回结果以及为空时运行逻辑?
- javascript - Javascript 复制功能不适用于隐藏的输入类型
- mysql - MySQL SUBSTR LOCATE 多搜索字符串
- regex - 验证我的 repo 它实际上是 Go 中的 github repo URL
- windows - 使用蜂窝热点时,npm 无法访问 Internet
- javascript - JavaScript 函数:成绩分布