C# 将身份验证添加到/swagger/ui/index页-swagger | Web API | swashback

C# 将身份验证添加到/swagger/ui/index页-swagger | Web API | swashback,c#,authentication,asp.net-web-api,swagger-ui,swashbuckle,C#,Authentication,Asp.net Web Api,Swagger Ui,Swashbuckle,我正在从事一个招摇过市(WebAPI)项目。 当我第一次运行应用程序时,它会显示Swagger UI的登录页面。 因此,用户首先必须登录才能访问Swagger UI页面,但是,如果用户直接输入“”,则他可以访问Swagger UI页面 afaik的招摇过市用户界面是由招摇过市组件。该源在我的项目中不可用 如果用户没有登录到Swagger UI页面,我如何让他重定向到登录页面?最后,我用deleginghandler解决了这个问题,我是这样做的: 创建一个文件SwaggerAccessMessag

我正在从事一个招摇过市(WebAPI)项目。
当我第一次运行应用程序时,它会显示Swagger UI的登录页面。
因此,用户首先必须登录才能访问Swagger UI页面,但是,如果用户直接输入“”,则他可以访问Swagger UI页面

afaik的招摇过市用户界面是由招摇过市组件。该源在我的项目中不可用


如果用户没有登录到Swagger UI页面,我如何让他重定向到登录页面?

最后,我用
deleginghandler
解决了这个问题,我是这样做的:
创建一个文件
SwaggerAccessMessageHandler.cs
,并将其添加到
App_Start
文件夹中

using System;
using System.Net;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
public class SwaggerAccessMessageHandler : DelegatingHandler
{
    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        if (IsSwagger(request) && !Thread.CurrentPrincipal.Identity.IsAuthenticated)
        {
            HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.Redirect);
            // Redirect to login URL
            string uri = string.Format("{0}://{1}", request.RequestUri.Scheme, request.RequestUri.Authority);    
            response.Headers.Location = new Uri(uri);
            return Task.FromResult(response);
        }
        else
        {
            return base.SendAsync(request, cancellationToken);
        }
    }

    private bool IsSwagger(HttpRequestMessage request)
    {
        return request.RequestUri.PathAndQuery.Contains("/swagger");
    }
}

在我的例子中,这不是招摇过市页面,而是spring安全登录页面。
启动版本2.X包括安全自动配置,因此如果您在build.gradle中添加spring安全插件,请删除并重新启动。

页面没有正确重定向ASP.Net core的内容是什么?我应该把哪个文件夹放在SwaggerAccessMessageHandler.cs文件中?@superninja你找到解决办法了吗?因为我需要同样的asp.net核心api
GlobalConfiguration.Configuration.MessageHandlers.Add(new SwaggerAccessMessageHandler());

GlobalConfiguration.Configuration.EnableSwagger(c =>
{
    ...
});