Gus*_*man 3 .net c# swashbuckle asp.net-core
我正在创建一个 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();
}
Run Code Online (Sandbox Code Playgroud)
当我访问 SwaggerUI 时一切正常,我看到授权方案,我可以添加用户名和密码。调用任何 api 时都会出现问题,授权标头永远不会发送到 API 控制器。
我是否需要做任何其他事情才能告诉 Swasbuckle 它必须发送授权标头?
好的,我终于找到了缺少的东西。您需要添加一个文档过滤器才能让 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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1353 次 |
| 最近记录: |