没有授权 header

No authorization header

我正在创建 ASP.NET Core 2.0 Web API,一切正常,但我在使用 Swashbuckle 时遇到了问题。我已经为我的 API 添加了基本身份验证,并为 Swasbuckle 启用了基本方案:

public void ConfigureServices(IServiceCollection services)
{
    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
        c.AddSecurityDefinition("Basic", new BasicAuthScheme { Description = "Basic authentication" });
    });

    services.AddMvc();
}

当我访问 SwaggerUI 时一切正常,我看到了授权方案,我可以添加用户名和密码。调用任何 api 时都会出现问题,授权 header 永远不会发送到 API 控制器。

我是否需要做任何其他事情才能告诉 Swasbuckle 它必须发送授权 header?

好的,终于找到少了什么。您需要添加文档过滤器才能让 Swashbuckle 发送授权:

public class BasicAuthFilter : IDocumentFilter
{
    public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
    {
        var securityRequirements = new Dictionary<string, IEnumerable<string>>()
        {
            { "Basic", new string[] { } }
        };

        swaggerDoc.Security = new[] { securityRequirements };
    }
}

//In the Startup class...
public void ConfigureServices(IServiceCollection services)
{
    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
        c.AddSecurityDefinition("Basic", new BasicAuthScheme { Description = "Basic authentication" });
            c.DocumentFilter<BasicAuthFilter>();
    });

    services.AddMvc();
}