“JwtBearerDefaults.AuthenticationScheme”和“JwtBearerDefaults”到底是什么?

问题描述 投票:0回答:1

调用 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)
    };
});
c# asp.net .net api
1个回答
2
投票

JwtBearerDefaults.AuthenticationScheme
是一个值为“Bearer”的常量。这只是与身份验证提供者意图相似的文本。

当您调用

AddAuthentication
时,您需要提供default身份验证提供程序。提供者已被命名。默认情况下,
AddJwtBearer
将创建一个具有名称的身份验证提供程序,是的,您猜对了,
JwtBearerDefaults.AuthenticationScheme

如果您愿意,您可以完全忽略

JwtBearerDefaults
课程。将您想要的任何字符串传递给
AddAuthentication
,然后使用
AddJwtBearer
的重载,它采用字符串和操作来自定义提供程序的名称。如果您使用多个相同的身份验证方案(例如,您有两个具有不同选项的
.AddJwtBearer()
),这非常有用。

builder.Services.AddAuthentication("MyCoolAuthProvider")
.AddJwtBearer("MyCoolAuthProvider", options => {
    //...
});

最后,人们为什么要使用

JwtBearerDefaults
类?与您命名
for
循环变量
i
的原因相同。这是文档所建议的,其他人都这样做。至少如果它是一个常量,你就不能输入错误的值。

© www.soinside.com 2019 - 2024. All rights reserved.