.net + jwt + swagger(Controller中添加了Authorize特性后,Swagger上无法测试了)

.net 6.0 + JWT + Swagger (Controller中添加了Authorize特性后,Swagger上无法测试了)

原本API都能正常测试

img

部分接口需要特殊权限,所以Controller上加了Authorize特性
用PostMan测试,功能确实达到了

img

但是在Swagger画面上,凡是加了【Atuhorize】特性的函数,
右边的锁不见了,测试时,不自动添加Token了。报错401没有权限。
没有加【Atuhorize】任然正常,Swagger会自动在Header头部添加jwt的Token。

img

仅仅只是无法在Swagger画面上进行测试。
我应该怎样设置,能把右边的锁加回来。

自问自答吧。我把SecurityRequirementsOperationFilter去掉后,正常了。
原因没有去深究。


options.OperationFilter<AddResponseHeadersFilter>();
options.OperationFilter<AppendAuthorizeToSummaryOperationFilter>();
//options.OperationFilter<SecurityRequirementsOperationFilter>(); // 开启后Swagger无法测试带Authorize特性的API(Token不会自动添加)

这似乎是因为当您将 [Authorize] 属性添加到控制器或 API 中的操作时,这意味着端点需要身份验证和授权。 Swagger UI 通常提供一种通过在端点旁边添加锁图标来授权请求的方法,允许您输入 JWT 令牌或其他身份验证凭据。

但是,在您的情况下,添加 [Authorize] 属性后,锁定图标在 Swagger 中消失,并且令牌不会自动添加到请求中,从而导致 401 Unauthorized 错误。