【发布时间】:2021-07-02 19:39:45
【问题描述】:
版本:
- ASP Net Core Web API - 2.2
- Swashbuckle.AspNetCore - 4.0.1
我目前拥有什么?
我已经在我的 Web API 项目中实现了 swagger。我在需要它的方法上使用带有[Authorize] 属性的JWT 授权。
所以我想要一种简单的方法来发送需要授权的请求。在我的ConfigureServices 类中,我添加了以下逻辑。
services.AddSwaggerGen(c =>
{
// Other swagger options
c.AddSecurityDefinition("Bearer", new ApiKeyScheme
{
In = "header",
Description = "Please enter into field the word 'Bearer' following by space and your JWT token",
Name = "Authorization",
Type = "apiKey"
});
c.AddSecurityRequirement(new Dictionary<string, IEnumerable<string>>
{
{ "Bearer", Enumerable.Empty<string>() },
});
// Other swagger options
});
它的作用如下:
它在 swagger 中添加了一个新按钮 - 授权。
问题是,它还在每个方法旁边添加了一个“打开”储物柜图标。不过,其中一些需要授权。
当我使用授权按钮成功授权时(它基本上为每个请求添加标题授权),我收到一个“关闭”的储物柜。
我知道这可能是指示授权令牌将通过请求发送的所需功能。我想要一种方法来显示哪些方法需要授权,哪些不需要。
我想要什么?
例如,匿名方法的“开放”储物柜和具有[Authorize] 属性的方法的“关闭”储物柜。
它可以是一个附加图标,在这个旁边或修改这个的行为,没问题。我怎样才能做到这一点?
可能的解决方案?
我相信一个可能的解决方案是创建一个 OperationFilter 并遍历所有方法并将“某物”仅附加到具有[Authorize] 属性的那些上。这是最好的解决方案吗?如果是这样,您将如何实施?
【问题讨论】:
标签: c# asp.net-core authorization swagger swashbuckle