Как заменить расширение AddJwtBearer в .NET Core 3.0

19

У меня есть следующий код, который компилируется и работает в .NET Core 2.2:

  byte[] key = Encoding.ASCII.GetBytes(Constants.JWT_SECRET); 
        services.AddAuthentication(x =>
        {
            x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
        })
        .AddJwtBearer(x =>
        {
            x.RequireHttpsMetadata = false;
            x.SaveToken = true;
            x.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuerSigningKey = true,
                IssuerSigningKey = new SymmetricSecurityKey(key),
                ValidateIssuer = false,
                ValidateAudience = false
            };
        });

В .NET Core 3.0 я получаю сообщение об ошибке:

Ошибка CS1061 «AuthenticationBuilder» не содержит определения для «AddJwtBearer», и нет доступного метода расширения «AddJwtBearer», принимающего первый аргумент типа «AuthenticationBuilder» (вы пропустили директиву using или ссылку на сборку?)

когда я просматриваю документацию MSFT: https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.dependencyinjection.jwtbearerextensions.addjwtbearer?view=aspnetcore-2.2

и попробуйте получить версию 3.0, кажется, что это последняя версия, где это определено. Как перенести AddJwtBearer в Core 3.0?

shelbypereira
источник
поделитесь своим файлом csproject
JeePakaJP

Ответы:

6

Вы должны включить пакет Microsoft.AspNetCore.Authentication.JwtBearer в свой проект.

Мерт Сайин
источник
2
Вы использовали using Microsoft.AspNetCore.Authentication.JwtBearer;в топе?
Мерт Сайин
да, я не думаю, что это так просто, поскольку в документации MSFT четко сказано, что этот метод не существует в 3.0. Я думаю, что может быть какой-то способ использовать Dependency Injection при запуске, чтобы добавить JwtBearer, но я не смог найти в интернете.
Шелбыперейра