如何在 .NET Core 3.0 中替换 AddJwtBearer 扩展
Posted
技术标签:
【中文标题】如何在 .NET Core 3.0 中替换 AddJwtBearer 扩展【英文标题】:How to replace AddJwtBearer extension in .NET Core 3.0 【发布时间】:2020-02-23 20:32:12 【问题描述】:我有以下在 .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?
【问题讨论】:
分享你的csproject文件 你解决了这个问题吗?在 .net 5 中它说 AddTokenAuthentication 不存在 使用接受的答案解决了,但那是 .net core 3.0 你可能需要 net 5 的更新版本,我不使用 .net 5 如果您从版本 2.2 转换为 3.0 安装包 Microsoft.AspNetCore.Authentication.JwtBearer -Version 3.0.3 【参考方案1】:就像 Mert Sayin 所说,包含包 Microsoft.AspNetCore.Authentication.JwtBearer,但使用 版本 3.0.0。
【讨论】:
【参考方案2】:您必须将Microsoft.AspNetCore.Authentication.JwtBearer 包包含到您的项目中。 Core 3.0 及更高版本的版本为 3.0.0。
【讨论】:
您是否在顶部使用了using Microsoft.AspNetCore.Authentication.JwtBearer;
?
是的,我认为这并不简单,因为 MSFT 文档明确指出 3.0 中不存在此方法。我认为可能有一些方法可以在启动时使用依赖注入来添加 JwtBearer,但我无法在互联网上找到。【参考方案3】:
类似这样的:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options => Configuration.Bind("JwtSettings", options)) .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options => Configuration.Bind("CookieSettings", options));
从这里: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/?view=aspnetcore-3.1
【讨论】:
以上是关于如何在 .NET Core 3.0 中替换 AddJwtBearer 扩展的主要内容,如果未能解决你的问题,请参考以下文章
如何在 .NET Core 3.0 SDK 上构建多目标 .NET 5 和 .NET Core 3.1
如何在 .NET Core 3.0 Entity Framework 中执行组加入?
如何将 .NET Core 2.2 Web API 迁移到 .NET Core 3.0?
如何在 Asp.Net Core 3.0 WebAPI 中启用 CORS