如何使端点在 AND 基础上需要多个安全定义?
How to make an endpoint require on an AND basis multiple security definitions?
想象一下,有一个端点需要访问令牌和请求形式的 api 密钥 header。
目前我已经概述了端点的两个安全定义,但是 UI 在“或”的基础上识别它们 - 这意味着如果两者中的任何一个被填充,它就很好。
我想将其更改为基于 AND 的方式,以便当有问题的端点需要这两个授权时 - 两者都需要定义才能工作。
谢谢!
不要声明两个单独的 OpenApiSecurityRequirement
对象,只需声明一个对象,然后在字典中 - 包括两个证券。
例如:
operation.Security = new List<OpenApiSecurityRequirement>
{
new OpenApiSecurityRequirement
{
[ apiKeyScheme ] = Array.Empty<string>(),
[ bearerTokenScheme ] = Array.Empty<string>()
}
};
(其中的任何键值对都是在AND的基础上应用的),
而不是
operation.Security = new List<OpenApiSecurityRequirement>
{
new OpenApiSecurityRequirement
{
[ apiKeyScheme ] = Array.Empty<string>()
},
new OpenApiSecurityRequirement
{
[ bearerTokenScheme ] = Array.Empty<string>()
}
};
基本上,单独的要求是通过 OR 子句应用的,而要求本身通过 AND 子句应用其中的证券。
想象一下,有一个端点需要访问令牌和请求形式的 api 密钥 header。
目前我已经概述了端点的两个安全定义,但是 UI 在“或”的基础上识别它们 - 这意味着如果两者中的任何一个被填充,它就很好。
我想将其更改为基于 AND 的方式,以便当有问题的端点需要这两个授权时 - 两者都需要定义才能工作。
谢谢!
不要声明两个单独的 OpenApiSecurityRequirement
对象,只需声明一个对象,然后在字典中 - 包括两个证券。
例如:
operation.Security = new List<OpenApiSecurityRequirement>
{
new OpenApiSecurityRequirement
{
[ apiKeyScheme ] = Array.Empty<string>(),
[ bearerTokenScheme ] = Array.Empty<string>()
}
};
(其中的任何键值对都是在AND的基础上应用的), 而不是
operation.Security = new List<OpenApiSecurityRequirement>
{
new OpenApiSecurityRequirement
{
[ apiKeyScheme ] = Array.Empty<string>()
},
new OpenApiSecurityRequirement
{
[ bearerTokenScheme ] = Array.Empty<string>()
}
};
基本上,单独的要求是通过 OR 子句应用的,而要求本身通过 AND 子句应用其中的证券。