So ersetzen Sie die AddJwtBearer-Erweiterung in .NET Core 3.0

19

Ich habe den folgenden Code, der in .NET Core 2.2 kompiliert und funktioniert:

  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
            };
        });

In .NET Core 3.0 wird folgende Fehlermeldung angezeigt:

Fehler CS1061 'AuthenticationBuilder' enthält keine Definition für 'AddJwtBearer' und es konnte keine zugängliche Erweiterungsmethode 'AddJwtBearer' gefunden werden, die ein erstes Argument vom Typ 'AuthenticationBuilder' akzeptiert (fehlt Ihnen eine using-Direktive oder eine Assemblyreferenz?)

Wenn ich mir die MSFT-Dokumentation ansehe: https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.dependencyinjection.jwtbearerextensions.addjwtbearer?view=aspnetcore-2.2

und versuchen Sie, auf Version 3.0 zu gelangen. Es scheint, dass dies die letzte Version ist, in der dies definiert ist. Wie migriere ich AddJwtBearer zu Core 3.0?

Shelbypereira
quelle
Teilen Sie Ihre Projektdatei
JeePakaJP

Antworten:

6

Sie müssen das Microsoft.AspNetCore.Authentication.JwtBearer- Paket in Ihr Projekt aufnehmen.

Mert Sayın
quelle
2
Hast du using Microsoft.AspNetCore.Authentication.JwtBearer;oben benutzt?
Mert Sayın
Ja, ich denke nicht, dass es so einfach ist, da in der MSFT-Dokumentation eindeutig angegeben ist, dass diese Methode in 3.0 nicht vorhanden ist. Ich denke, es gibt möglicherweise eine Möglichkeit, Dependency Injection beim Start zu verwenden, um den JwtBearer hinzuzufügen, aber ich konnte ihn im Internet nicht finden.
Shelbypereira