如何在.NET Core 3.0中替换AddJwtBearer扩展

38

我有以下代码,在 .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中,我遇到错误:

Error CS1061 'AuthenticationBuilder'不包含定义为“AddJwtBearer”的内容,也找不到可接受类型为“AuthenticationBuilder”的第一个参数的访问扩展方法“AddJwtBearer”(是否缺少使用指令或程序集引用?)

当我查看MSFT文档时: https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.dependencyinjection.jwtbearerextensions.addjwtbearer?view=aspnetcore-2.2

并尝试转到版本3.0时,似乎这是定义该方法的最后一个版本。 如何将AddJwtBearer迁移到Core 3.0?


分享你的csproject文件。 - JeePakaJP
你解决了吗?我在 .NET 5 中遇到了一个问题,它说 AddTokenAuthentication 不存在。 - c-sharp-and-swiftui-devni
已使用被接受的答案解决了问题,但那是 .NET Core 3.0 版本,你可能需要更新到更高版本的 .NET 5,我不使用 .NET 5。 - shelbypereira
如果您从2.2版本升级到3.0版本,请执行以下操作: 安装Microsoft.AspNetCore.Authentication.JwtBearer -Version 3.0.3包。 - CodeMind
3个回答

80

18

4
你是否在代码的开头使用了 using Microsoft.AspNetCore.Authentication.JwtBearer;?请确认。 - Mert Sayın
是的,我知道。我不认为这很简单,因为微软的文档明确说明该方法在3.0中不存在。我认为可能有一些方法可以在启动时使用依赖注入来添加JwtBearer,但我在互联网上没有找到相关信息。 - shelbypereira

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接