Jak zastąpić rozszerzenie AddJwtBearer w .NET Core 3.0

19

Mam następujący kod, który kompiluje i działa w .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
            };
        });

W .NET Core 3.0 pojawia się błąd:

Błąd CS1061 „AuthenticationBuilder” nie zawiera definicji „AddJwtBearer” i nie można znaleźć dostępnej metody rozszerzenia „AddJwtBearer” akceptującej pierwszy argument typu „AuthenticationBuilder” (brakuje Ci dyrektywy lub odniesienia do zestawu?)

kiedy patrzę na dokumentację MSFT: https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.dependencyinjection.jwtbearerextensions.addjwtbearer?view=aspnetcore-2.2

i spróbuj dostać się do wersji 3.0. Wygląda na to, że jest to ostatnia wersja, w której została zdefiniowana. Jak przeprowadzić migrację AddJwtBearer do Core 3.0?

shelbypereira
źródło
udostępnij plik csproject
JeePakaJP

Odpowiedzi:

6

Musisz dołączyć pakiet Microsoft.AspNetCore.Authentication.JwtBearer do swojego projektu.

Mert Sayın
źródło
2
Czy używałeś using Microsoft.AspNetCore.Authentication.JwtBearer;na górze?
Mert Sayın
tak, nie sądzę, że to takie proste, ponieważ dokumentacja MSFT wyraźnie stwierdza, że ​​ta metoda nie istnieje w 3.0. Myślę, że może być jakiś sposób na użycie Dependency Injection podczas uruchamiania, aby dodać JwtBearer, ale nie udało mi się go znaleźć w Internecie.
shelbypereira