Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 带OAS3的虚张声势带扣虚张声势UI挂锁_Asp.net Core_Jwt_Swagger_Swagger Ui_Openapi - Fatal编程技术网

Asp.net core 带OAS3的虚张声势带扣虚张声势UI挂锁

Asp.net core 带OAS3的虚张声势带扣虚张声势UI挂锁,asp.net-core,jwt,swagger,swagger-ui,openapi,Asp.net Core,Jwt,Swagger,Swagger Ui,Openapi,我有一个ASP.Net Core Rest Web API,用(.Net v5和Swashback.AspNetCore v5.6.3)记录。它通过OAS3支持生成Swagger文档和UI 我的API还使用JWT承载令牌。因此,我将此代码添加到了swagger配置中: options.AddSecurityDefinition(“Bearer”,新的OpenApiSecurityScheme()) { In=参数位置.Header, Name=“授权”, 类型=SecuritySchemeTyp

我有一个ASP.Net Core Rest Web API,用(.Net v5和Swashback.AspNetCore v5.6.3)记录。它通过OAS3支持生成Swagger文档和UI

我的API还使用JWT承载令牌。因此,我将此代码添加到了swagger配置中:

options.AddSecurityDefinition(“Bearer”,新的OpenApiSecurityScheme())
{
In=参数位置.Header,
Name=“授权”,
类型=SecuritySchemeType.ApiKey,
Description=“将`bearer`关键字放在令牌前面”
});
options.AddSecurityRequirement(新的OpenApiSecurityRequirement()
{
{
新的OpenApiSecurityScheme()
{
Reference=新的openapirection()
{
Id=“持票人”,
Type=ReferenceType.SecurityScheme
}
},
Array.Empty()
}
});
正如预期的那样,它向Swagger UI添加了授权功能:

但我也注意到每个HTTP请求旁边都有一些挂锁。 它们在授权前已解锁:

授权后,他们锁定:

我怎样才能让这些挂锁发出信号,表明是否需要授权(我想我在某处看到过同样的挂锁在做这件事,他们似乎也很自然地做这类事情)

已经尝试过类似的方法,但不起作用(请求头不再包含jwt令牌):

options.OperationFilter();
我发现问题在于我的招摇过市使用的是OAS3和
SecurityRequirementsOperationFilter
,具体取决于OAS2。我尝试过寻找替代方案,但似乎没有类似的OAS3工具

我该怎么办? 我应该忘记这个功能吗?但这似乎是这些锁的唯一用途。
有没有什么方法可以拥有此功能并继续使用OAS3(我也不确定我是否真的需要那么多OAS3支持)。

经过一些研究,我在这里找到了答案:

因此,代码是:

options.AddSecurityDefinition(“Bearer”,新的OpenApiSecurityScheme())
{
Description=“无需将`bearer`关键字放在令牌前面”,
Type=SecuritySchemeType.Http,
Scheme=“持票人”,
BearPerformat=“JWT”
});

options.OperationFilter

您可以仅在需要授权的API旁边显示挂锁。您可以通过创建一个实现您自己逻辑的自定义操作筛选器来实现这一点,而不是尝试使用SecurityRequirementsOperationFilter。@Baldevhattarai,谢谢您的评论,它帮助我找到了适合我的解决方案: