You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET 5中为Swagger UI基本身份验证表单添加CustomerId参数

解决方案

你需要额外新增一个ApiKey类型的安全定义来对应CustomerId请求头,同时调整安全要求,让两个安全方案同时生效,这样Swagger UI的授权表单就会同时出现用户名、密码、CustomerId三个输入项。

第一步:修改ConfigureServices中的Swagger配置

替换你原来的Swagger配置代码如下:

public void ConfigureServices(IServiceCollection services)  
{  
    services.AddControllers();  

    #region Configure Swagger  
    services.AddSwaggerGen(c =>  
    {  
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "BasicAuth", Version = "v1" });
        
        // 原有基础身份验证安全定义
        c.AddSecurityDefinition("basic", new OpenApiSecurityScheme  
        {  
            Name = "Authorization",  
            Type = SecuritySchemeType.Http,  
            Scheme = "basic",  
            In = ParameterLocation.Header,  
            Description = "基础身份验证请求头"  
        });
        
        // 新增CustomerId请求头安全定义
        c.AddSecurityDefinition("customerId", new OpenApiSecurityScheme
        {
            Name = "CustomerId",
            Type = SecuritySchemeType.ApiKey,
            In = ParameterLocation.Header,
            Description = "自定义客户ID请求头参数"
        });
        
        // 调整安全要求,两个验证方案同时生效
        c.AddSecurityRequirement(new OpenApiSecurityRequirement  
        {  
            {  
                new OpenApiSecurityScheme  
                {  
                    Reference = new OpenApiReference  
                    {  
                        Type = ReferenceType.SecurityScheme,  
                        Id = "basic"  
                    }  
                },
                new string[] {}
            },
            {
                new OpenApiSecurityScheme
                {
                    Reference = new OpenApiReference
                    {
                        Type = ReferenceType.SecurityScheme,
                        Id = "customerId"
                    }
                },
                new string[] {}
            }
        });  
    });
    #endregion
}

第二步:验证效果

启动项目打开Swagger UI后,点击「Authorize」按钮,弹出的授权表单会同时展示三个输入项:

  • 基础认证对应的用户名输入框
  • 基础认证对应的密码输入框
  • 自定义的CustomerId输入框

三个值都填写完成后点击授权,后续所有请求会自动在Header中带上Authorization和CustomerId两个参数,满足你的鉴权需求。

补充说明

如果你需要对部分接口豁免CustomerId校验,可以在对应接口上添加[AllowAnonymous]特性,或者通过OperationFilter自定义控制哪些接口需要校验这个参数。

内容的提问来源于stack exchange,提问作者Jay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 13:39:03