Swagger с Core 2.0 и аутентификацией JWT - PullRequest
0 голосов
/ 03 мая 2018

Я перемещаю свои конечные точки Web-интерфейса Asp.Net в проект .Net Core 2.0, но борюсь с Swagger для тестирования API. В данный момент я получаю следующую ошибку:

InvalidOperationException: не указана схема аутентификации, и не найдено DefaultChallengeScheme.

Я использую Swashbuckle.AspNetCore 2.4.0

Я добавил свой AddSwashbuckle в мой ConfigureService в Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors();
    services.AddSwaggerDocumentation();
    services.AddMvc();
}

И в методе Configure я добавил строку Add для swashbuckle.

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseSwaggerDocumentation();
    }

    app.UseCors(builder => builder.WithOrigins("*"));
    app.UseMvc();
}

Я добавил метод расширения для обработки Swagger.

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Swashbuckle.AspNetCore.Swagger;
using System.Collections.Generic;

namespace JwtSwaggerDemo.Infrastructure
{
    public static class SwaggerServiceExtensions
    {
        public static IServiceCollection AddSwaggerDocumentation(this IServiceCollection services)
        {
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1.0", new Info { Title = "Main API v1.0", Version = "v1.0" });

                // Swagger 2.+ support
                var security = new Dictionary<string, IEnumerable<string>>
                {
                    {"Bearer", new string[] { }},
                };

                c.AddSecurityDefinition("Bearer", new ApiKeyScheme
                {
                    Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
                    Name = "Authorization",
                    In = "header",
                    Type = "apiKey"
                });
                c.AddSecurityRequirement(security);
            });

            return services;
        }

        public static IApplicationBuilder UseSwaggerDocumentation(this IApplicationBuilder app)
        {
            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1.0/swagger.json", "Versioned API v1.0");

                c.DocumentTitle = "Title Documentation";
                c.DocExpansion(DocExpansion.None);
            });

            return app;
        }
    }
}

(Обратите внимание, это следовало это сообщение .

Однако я получаю сообщение об ошибке, как указано выше, и не могу понять, как я могу заставить это работать. Мне кажется, что-то где-то не хватает. Как я могу решить эту проблему или увидеть, в чем проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...