gpt4 book ai didi

c# - Swagger - 添加用户名/登录名并在自定义 header 中使用

转载 作者:行者123 更新时间:2023-12-03 05:07:33 25 4
gpt4 key购买 nike

我有一个用 C# 编写的 Azure 移动应用 API。

我使用 Nuget 添加了 Swagger。

Swagger 似乎工作得很好。但是“开箱即用”,它允许用户在 swagger 主页的右上角输入 API key ...然后将该值附加到所有带有“?/api_key=xxxx”的测试调用

我需要弄清楚如何让 swagger 将此“ key ”作为调用正文中名为“X-ZUMO-AUTH”的自定义 header 发送。

理想情况下,我也想对此进行扩展。

我有一个需要用户名/密码的“auth”api 调用...如果我可以使用调用我的“auth”端点的用户名/密码组合删除 UI 上的“key”字段,那就太好了在所有后续调用 api 时使用返回值...再次作为自定义 header “X-ZUMO-AUTH”..

如果我能实现第 1 部分,那就太好了......

有人能给我指出正确的方向吗?

最佳答案

参见Customize Authentication Header in SwaggerUI using Swashbuckle一个 JavaScript 解决方案。如果您使用 MVC 或 WebAPI,请在 SwaggerConfig.cs 中作为 GlobalConfiguration.Configuration.EnableSwagger(c => { }) 的一部分添加c.OperationFilter<AddAuthorizationHeaderParameterOperationFilter>(); .

然后您可以通过添加类似于以下内容的类来配置:

public class AddAuthorizationHeaderParameterOperationFilter : IOperationFilter
{
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
var filterPipeline = apiDescription.ActionDescriptor.GetFilterPipeline();
var isAuthorized = filterPipeline
.Select(filterInfo => filterInfo.Instance)
.Any(filter => filter is IAuthorizationFilter);

var allowAnonymous = apiDescription.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute>().Any();

if (isAuthorized && !allowAnonymous)
{
if (operation.parameters == null)
{
operation.parameters = new List<Parameter>();
}
operation.parameters.Add(new Parameter
{
name = "Authorization",
@in = "header",
description = "access token",
required = true,
type = "string"
});
}
}
}

关于c# - Swagger - 添加用户名/登录名并在自定义 header 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37349135/

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