gpt4 book ai didi

asp.net-web-api - Swagger UI : pass custom Authorization header

转载 作者:行者123 更新时间:2023-12-04 02:39:32 25 4
gpt4 key购买 nike

我在 ASP.NET Web API 上使用 Swashbuckle 和 Swagger。我试图找到一种方法来通过 Swagger UI 传递包含不记名 token 的 Authorization header 。我一直在四处寻找,但所有的答案似乎都指向 this链接。

但是,这假设标题的内容预先已知。我真的需要一种方法来更改 Swagger UI 中的标题(就在点击“试用!”按钮之前),因为不记名 token 每小时都会过期。类似于 Postman 允许您添加标题的方式。

这似乎是一个如此简单可笑的问题,但答案是什么?

最佳答案

我们在项目中遇到了同样的问题。我还想将 header 参数添加到 Swagger UI 网站。我们是这样做的:
1.定义一个OperationFilter类
每次构建 Swagger 时,都会在每个 API 操作上执行 OperationFilter。根据您的代码,将根据您的过滤器检查操作。在此示例中,我们使每个操作都需要 header 参数,但在具有 AllowAnonymous 属性的操作中将其设为可选。

    public class AddAuthorizationHeader : IOperationFilter
{
/// <summary>
/// Adds an authorization header to the given operation in Swagger.
/// </summary>
/// <param name="operation">The Swashbuckle operation.</param>
/// <param name="schemaRegistry">The Swashbuckle schema registry.</param>
/// <param name="apiDescription">The Swashbuckle api description.</param>
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (operation == null) return;

if (operation.parameters == null)
{
operation.parameters = new List<Parameter>();
}

var parameter = new Parameter
{
description = "The authorization token",
@in = "header",
name = "Authorization",
required = true,
type = "string"
};

if (apiDescription.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute>().Any())
{
parameter.required = false;
}

operation.parameters.Add(parameter);
}
}
2. 告诉 Swagger 使用这个 OperationFilter
在 SwaggerConfig 中,只需添加操作过滤器应使用如下:
    c.OperationFilter<AddAuthorizationHeader>();
希望这能帮到你!

关于asp.net-web-api - Swagger UI : pass custom Authorization header,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38906224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com