调用 JwtBearerDefaults.AuthenticationScheme 和 JwtBearerDefaults 到底是做什么用的?
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidIssuer = tokenOptions.Issuer,
ValidAudience = tokenOptions.Audience,
ValidateIssuerSigningKey = true,
IssuerSigningKey = SecurityKeyHelper.CreateSecurityKey(tokenOptions.SecurityKey)
};
});
JwtBearerDefaults.AuthenticationScheme
是一个值为“Bearer”的常量。这只是与身份验证提供者意图相似的文本。
当您调用
AddAuthentication
时,您需要提供default身份验证提供程序。提供者已被命名。默认情况下,AddJwtBearer
将创建一个具有名称的身份验证提供程序,是的,您猜对了,JwtBearerDefaults.AuthenticationScheme
。
如果您愿意,您可以完全忽略
JwtBearerDefaults
课程。将您想要的任何字符串传递给 AddAuthentication
,然后使用 AddJwtBearer
的重载,它采用字符串和操作来自定义提供程序的名称。如果您使用多个相同的身份验证方案(例如,您有两个具有不同选项的 .AddJwtBearer()
),这非常有用。
builder.Services.AddAuthentication("MyCoolAuthProvider")
.AddJwtBearer("MyCoolAuthProvider", options => {
//...
});
最后,人们为什么要使用
JwtBearerDefaults
类?与您命名 for
循环变量 i
的原因相同。这是文档所建议的,其他人都这样做。至少如果它是一个常量,你就不能输入错误的值。