首页 > 解决方案 > 如何使端点在 AND 基础上需要多个安全定义?

问题描述

想象一下,有一个端点既需要访问令牌,又需要请求标头形式的 api 密钥。

目前,我已经概述了端点的两个安全定义,但 UI 在“或”的基础上识别它们——这意味着如果两者中的任何一个被填充,那就很好。

我想将其更改为以 AND 为基础,以便当有问题的端点需要这两个授权时 - 都需要定义才能工作。

谢谢!

标签: c#.net-coreswaggerswagger-uiswashbuckle

解决方案


无需声明两个单独的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 子句应用其中的证券。


推荐阅读