C# 当提供非默认模式时,如何禁用默认身份验证方案

C# 当提供非默认模式时,如何禁用默认身份验证方案,c#,authentication,asp.net-core,C#,Authentication,Asp.net Core,我的应用程序中有两个身份验证方案 services.AddAuthentication("default") .AddJwtBearer("default", options => { // some options }) .AddJwtBearer("non-default", options => { // some other options }); 我们的想法是对大多数控制器使用默认值,并且当需

我的应用程序中有两个身份验证方案

services.AddAuthentication("default")
    .AddJwtBearer("default", options =>
    {
        // some options
    })
    .AddJwtBearer("non-default", options =>
    {
        // some other options
    });
我们的想法是对大多数控制器使用默认值,并且当需要非默认值时,使用
[Authorize(AuthenticationSchemes=“non-default”)]
明确提及所需的模式。问题是,总是调用默认模式,即使设置了非默认模式。它运行并失败,然后正确的模式运行并成功。但这会导致日志中充满“验证令牌失败”消息。有没有办法禁用默认模式


我使用的是net core 2.2,但考虑到要升级到3.1。

我发现解决方案不是提供默认的身份验证方法,而是提供默认的授权策略

services.AddAuthentication()
    .AddJwtBearer("defaultScheme", options =>
    {
        // some options
    })
    .AddJwtBearer("nonDefaultScheme", options =>
    {
        // some other options
    });

services.AddAuthorization(opts =>
{
    opts.DefaultPolicy = new AuthorizationPolicyBuilder()
                                .AddAuthenticationSchemes("defaultScheme")
                                .RequireAuthenticatedUser()
                                .Build();
    opts.AddPolicy("non-default", policy => policy
                                .AddAuthenticationSchemes("nonDefaultScheme")
                                .RequireAuthenticatedUser());
});

在此之后,
[Authorize]
[Authorize(“非默认”)]
都正常工作,只调用了其中一个身份验证方案。

这为我的问题指明了新的方向!谢谢你绕回来把你发现的东西放进去!