我正在使用.Net Core 2.1创建一个API,并使用JSON Web Token(JWT)进行身份验证。
我有两个控制器:我用[AllowAnonymous]
装饰了AuthenticationController
,用[Authorize]
装饰了UserController
。
Swagger工作正常:它允许我在不请求授权的情况下访问AuthenticationController(SignUp/SignIn)中的端点,并且它确实请求JWT访问UserController
中的端点。
然而,在Swagger UI中,每个控制器的每个端点都显示一个挂锁图标,好像它们都需要授权。一切都正常工作,正如预期的那样,但它只是困扰我的是,不需要授权的端点仍然显示挂锁图标。
是否有办法从这些端点移除挂锁图标?
我相信可以用OperationFilter
做一些事情,但我找不到一种方法。
4条答案
按热度按时间7d7tgy0s1#
当然,您需要使用
IOperationFilter
来删除匿名端点的挂锁图标。不要忘记删除
Startup.cs
中对AddSecurityRequirement
的任何调用,否则挂锁图标仍将添加到所有端点。kb5ga3dv2#
此解决方案适用于SwashBuckle 5. 0. 0-rc 5和.Net Core 3. 1. 1 Web API。您需要:
1.实现一个IOperationFilter接口,
1.添加c.操作过滤器();在您的Startup.cs文件中
1.最后删除AddSecurityRequirement任何调用
deikduxw3#
在startup.cs -〉services.AddSwaggerGen中,您需要添加
c.OperationFilter<ApplyOAuth2Security>();
并在stratup.cs中添加以下方法,这将在Swagger UI中为标记为仅授权的操作方法启用锁定/授权图标。g6ll5ycj4#
安装套件
Swashbuckle.AspNetCore.Filters
然后当你记录你的昂首阔步你需要添加下面的行
下面是一个来自.NET6示例
Swagger UI