gpt4 book ai didi

asp.net - 使用用户名和密码保护 swagger 文档页面 Asp Net Core 2.1

转载 作者:行者123 更新时间:2023-12-04 23:36:57 35 4
gpt4 key购买 nike

我正在使用带有 Swashbuckle.aspnetcore.swagger 的 Asp.Net Core 2.1 Web Api

我想在授予访问权限之前使用用户名和密码保护 api 文档页面。

示例文档页面
enter image description here

确保公众无法访问

最佳答案

复制自 mguinness's answer on Github :

在 .NET Core 中,您使用中间件,而不是 DelegatingHandler:

public class SwaggerAuthorizedMiddleware
{
private readonly RequestDelegate _next;

public SwaggerAuthorizedMiddleware(RequestDelegate next)
{
_next = next;
}

public async Task Invoke(HttpContext context)
{
if (context.Request.Path.StartsWithSegments("/swagger")
&& !context.User.Identity.IsAuthenticated)
{
context.Response.StatusCode = StatusCodes.Status401Unauthorized;
return;
}

await _next.Invoke(context);
}
}

您还需要一个扩展方法来帮助添加到管道:

public static class SwaggerAuthorizeExtensions
{
public static IApplicationBuilder UseSwaggerAuthorized(this IApplicationBuilder builder)
{
return builder.UseMiddleware<SwaggerAuthorizedMiddleware>();
}
}

然后在使用 Swagger 之前添加到 Startup.cs 中的 Configure 方法:

app.UseSwaggerAuthorized();
app.UseSwagger();
app.UseSwaggerUi();

还有一个变体解决方案张贴在那里 how to do it with basic auth .

关于asp.net - 使用用户名和密码保护 swagger 文档页面 Asp Net Core 2.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51352018/

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